Der ultimative Leitfaden für Web Scraping Walmart

Raluca Penciuc am 23. Februar 2023

blog-image

Web Scraping Walmart ist ein beliebtes Thema bei Datenliebhabern und Unternehmen gleichermaßen. Walmart ist eines der größten Einzelhandelsunternehmen der Welt und verfügt über eine riesige Menge an Daten auf seiner Website. Durch das Scrapen dieser Daten können Sie wertvolle Einblicke in das Kundenverhalten, Markttrends und vieles mehr gewinnen.

In diesem Artikel werden wir den Prozess des Web-Scraping von Walmart mit TypeScript und Puppeteer untersuchen. Wir gehen auch auf die Einrichtung der Umgebung und die Identifizierung der Daten ein und extrahieren sie für die Verwendung in Ihren eigenen Projekten. Am Ende werden wir besprechen, wie die Verwendung eines professionellen Scrapers eine effektivere und zuverlässigere Lösung sein kann.

Am Ende dieses Leitfadens werden Sie ein solides Verständnis des Prozesses haben und in der Lage sein, ihn zur Verbesserung Ihres Unternehmens oder Ihrer Forschung zu nutzen. Egal, ob Sie Datenwissenschaftler, Vermarkter oder Geschäftsinhaber sind, dieser Leitfaden wird Ihnen helfen, die Macht der Daten von Walmart für Ihren Erfolg zu nutzen.

Voraussetzungen

Bevor wir beginnen, sollten wir uns vergewissern, dass wir über die notwendigen Instrumente verfügen.

Laden Sie zunächst Node.js von der offiziellen Website herunter und installieren Sie es. Stellen Sie sicher, dass Sie die Long-Term Support (LTS) Version verwenden. Dadurch wird auch automatisch der Node Package Manager (NPM) installiert, den wir für die Installation weiterer Abhängigkeiten verwenden werden.

Für dieses Tutorial werden wir Visual Studio Code als integrierte Entwicklungsumgebung (IDE) verwenden, aber Sie können auch eine andere IDE Ihrer Wahl verwenden. Erstellen Sie einen neuen Ordner für Ihr Projekt, öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um ein neues Node.js-Projekt einzurichten:

npm init -y

Dadurch wird eine package.json-Datei in Ihrem Projektverzeichnis erstellt, in der Informationen über Ihr Projekt und seine Abhängigkeiten gespeichert werden.

Als nächstes müssen wir TypeScript und die Typdefinitionen für Node.js installieren. TypeScript bietet eine optionale statische Typisierung, die hilft, Fehler im Code zu vermeiden. Führen Sie dazu im Terminal aus:

npm install typescript @types/node --save-dev

Sie können die Installation überprüfen, indem Sie sie ausführen:

npx tsc --version

TypeScript verwendet eine Konfigurationsdatei namens tsconfig.json, um Compiler-Optionen und andere Einstellungen zu speichern. Um diese Datei in Ihrem Projekt zu erstellen, führen Sie den folgenden Befehl aus:

npx tsc -init

Stellen Sie sicher, dass der Wert für "outDir" auf "dist" gesetzt ist. Auf diese Weise trennen wir die TypeScript-Dateien von den kompilierten Dateien. Weitere Informationen über diese Datei und ihre Eigenschaften finden Sie in der offiziellen TypeScript-Dokumentation.

Erstellen Sie nun ein Verzeichnis "src" in Ihrem Projekt und eine neue Datei "index.ts". Hier werden wir den Scraping-Code speichern. Um TypeScript-Code auszuführen, müssen Sie ihn zuerst kompilieren. Um sicherzustellen, dass wir diesen zusätzlichen Schritt nicht vergessen, können wir einen benutzerdefinierten Befehl verwenden.

Gehen Sie zur Datei "package. json" und bearbeiten Sie den Abschnitt "scripts" wie folgt:

"scripts": {

"test": "npx tsc && node dist/index.js"

}

Wenn Sie das Skript ausführen wollen, müssen Sie nur "npm run test" in Ihr Terminal eingeben.

Um die Daten von der Website abzugreifen, werden wir Puppeteer verwenden, eine Headless-Browser-Bibliothek für Node.js, mit der Sie einen Webbrowser steuern und programmatisch mit Websites interagieren können. Um sie zu installieren, führen Sie diesen Befehl im Terminal aus:

npm Puppeteer installieren

Es ist sehr empfehlenswert, wenn Sie die Vollständigkeit Ihrer Daten sicherstellen wollen, da viele Websites heutzutage dynamisch generierte Inhalte enthalten. Wenn Sie neugierig geworden sind, können Sie sich die Puppeteer-Dokumentation ansehen, bevor Sie fortfahren, um zu sehen, wozu das Programm in der Lage ist.

Auffinden der Daten

Nachdem Sie nun Ihre Umgebung eingerichtet haben, können wir mit dem Extrahieren der Daten beginnen. Für diesen Artikel habe ich mich entschieden, Daten von dieser Produktseite zu extrahieren: https://www.walmart.com/ip/Keter-Adirondack-Chair-Resin-Outdoor-Furniture-Teal/673656371.

Wir werden die folgenden Daten extrahieren:

  • den Produktnamen;
  • die Nummer der Produktbewertung;
  • die Produktbewertungen zählen;
  • den Produktpreis;
  • die Produktbilder;
  • die Einzelheiten des Produkts.

Alle diese Informationen sind in der nachstehenden Abbildung hervorgehoben:

blog-image

Wenn Sie die Entwicklertools für jedes dieser Elemente öffnen, können Sie die CSS-Selektoren sehen, die wir zum Auffinden der HTML-Elemente verwenden werden. Wenn Sie mit der Funktionsweise von CSS-Selektoren noch nicht vertraut sind, können Sie diesen Leitfaden für Einsteiger nutzen.

Datenextraktion

Bevor wir unser Skript schreiben, sollten wir uns vergewissern, dass die Installation von Puppeteer ordnungsgemäß verlaufen ist:

import puppeteer from 'puppeteer';

async function scrapeWalmartData(walmart_url: string): Promise<void> {

// Launch Puppeteer

const browser = await puppeteer.launch({

headless: false,

args: ['--start-maximized'],

defaultViewport: null

})

// Create a new page

const page = await browser.newPage()

// Navigate to the target URL

await page.goto(walmart_url)

// Close the browser

await browser.close()

}

scrapeWalmartData("https://www.walmart.com/ip/Keter-Adirondack-Chair-Resin-Outdoor-Furniture-Teal/673656371")

Hier öffnen wir ein Browserfenster, erstellen eine neue Seite, navigieren zu unserer Ziel-URL und schließen dann den Browser. Der Einfachheit halber und der visuellen Fehlersuche halber öffne ich das Browserfenster in maximierter Größe im nicht kopflosen Modus.

Werfen wir nun einen Blick auf die Struktur der Website:

blog-image

Um den Produktnamen zu erhalten, zielen wir auf das Attribut "itemprop" des Elements "h1". Das Ergebnis, nach dem wir suchen, ist sein Textinhalt.

// Extract product name

const product_name = await page.evaluate(() => {

const name = document.querySelector('h1[itemprop="name"]')

return name ? name.textContent : ''

})

console.log(product_name)

Für die Bewertungsnummer haben wir die "span"-Elemente, deren Klassenname auf "rating-number" endet, als zuverlässig identifiziert.

// Extract product rating number

const product_rating = await page.evaluate(() => {

const rating = document.querySelector('span[class$="rating-number"]')

return rating ? rating.textContent : ''

})

console.log(product_rating)

Und schließlich (für den hervorgehobenen Abschnitt) stützen wir uns für die Anzahl der Bewertungen und den Produktpreis auf das Attribut "itemprop", genau wie oben.

// Extract product reviews count

const product_reviews = await page.evaluate(() => {

const reviews = document.querySelector('a[itemprop="ratingCount"]')

return reviews ? reviews.textContent : ''

})

console.log(product_reviews)

// Extract product price

const product_price = await page.evaluate(() => {

const price = document.querySelector('span[itemprop="price"]')

return price ? price.textContent : ''

})

console.log(product_price)

Um zu den Produktbildern zu gelangen, navigieren wir weiter durch das HTML-Dokument:

blog-image

Etwas komplizierter, aber nicht unmöglich. Da wir die Bilder selbst nicht eindeutig identifizieren können, werden wir diesmal auf ihre übergeordneten Elemente abzielen. Daher extrahieren wir die "div"-Elemente, bei denen das Attribut "data-testid" auf "media-thumbnail" gesetzt ist.

Dann wandeln wir das Ergebnis in ein Javascript-Array um, damit wir jedes Element seinem "src"-Attribut zuordnen können.

// Extract product images

const product_images = await page.evaluate(() => {

const images = document.querySelectorAll('div[data-testid="media-thumbnail"] > img')

const images_array = Array.from(images)

return images ? images_array.map(a => a.getAttribute("src")) : []

})

console.log(product_images)

Zu guter Letzt blättern wir auf der Seite nach unten, um uns die Produktdetails anzusehen:

blog-image

Wir wenden dieselbe Logik wie beim Extrahieren der Bilder an und verwenden dieses Mal einfach den Klassennamen "dangerous-html".

// Extract product details

const product_details = await page.evaluate(() => {

const details = document.querySelectorAll('div.dangerous-html')

const details_array = Array.from(details)

return details ? details_array.map(d => d.textContent) : []

})

console.log(product_details)

Das Endergebnis sollte wie folgt aussehen:









Keter Adirondack Chair, Resin Outdoor Furniture, Teal

(4.1)

269 reviews

Now $59.99

[

'https://i5.walmartimages.com/asr/51fc64d9-6f1f-46b7-9b41-8880763f6845.483f270a12a6f1cbc9db5a37ae7c86f0.jpeg?odnHeight=80&odnWidth=80&odnBg=FFFFFF', 'https://i5.walmartimages.com/asr/80977b5b-15c5-435e-a7d6-65f14b2ee9c9.d1deed7ca4216d8251b55aa45eb47a8f.jpeg?odnHeight=80&odnWidth=80&odnBg=FFFFFF',

'https://i5.walmartimages.com/asr/80c1f563-91a9-4bff-bda5-387de56bd8f5.5844e885d77ece99713d9b72b0f0d539.jpeg?odnHeight=80&odnWidth=80&odnBg=FFFFFF', 'https://i5.walmartimages.com/asr/fd73d8f2-7073-4650-86a3-4e809d09286e.b9b1277761dec07caf0e7354abb301fc.jpeg?odnHeight=80&odnWidth=80&odnBg=FFFFFF',

'https://i5.walmartimages.com/asr/103f1a31-fbc5-4ad6-9b9a-a298ff67f90f.dd3d0b75b3c42edc01d44bc9910d22d5.jpeg?odnHeight=80&odnWidth=80&odnBg=FFFFFF', 'h Die Kombination von traditionellem Design und das Aussehen und das Gefühl von Holz mit langlebigen und wartungsfreien Materialien, wird dieser Stuhl zu finden',

'Keter Adirondack Stuhl, Harz Outdoor-Möbel, grau: Hergestellt aus einem Allwetter-resistenten Harz für ultimative Haltbarkeit witterungsbeständige Polypropylen-Konstruktion verhindert Ausbleichen, Rosten, Abblättern und Beulen - im Gegensatz zu echtem Holz Schnelle und einfache Montage Drehbare Getränkehalter Klassische Komfort neu definiert Ergonomisches Design Langlebig und witterungsbeständig Sorgenfreie Entspannung Abmessungen: 31.9" L x 31.5" W x 38" H Sitzhöhe ist 15.4 in. für einen tiefen Schalensitz und eine hohe Rückenlehne Stuhl wiegt 22 lbs. - schwer genug, um nicht im Wind umzukippen, aber leicht genug, um Ihren Terrassenplatz leicht umzugestalten 350 lbs. Kapazität '

]

Umgehung der Bot-Erkennung

Während das Scrapen von Walmart anfangs einfach erscheint, kann der Prozess komplexer und schwieriger werden, wenn Sie Ihr Projekt erweitern. Die Einzelhandelswebsite setzt verschiedene Techniken ein, um automatisierten Datenverkehr zu erkennen und zu verhindern, sodass Ihr Scraper bei einer Erweiterung blockiert wird.

Walmart verwendet das "Press & Hold"-Modell von CAPTCHA, das von PerimeterX angeboten wird und von dem bekannt ist, dass es fast unmöglich ist, es mit Ihrem Code zu lösen. Darüber hinaus verwendet die Website auch Schutzmechanismen von Akamai und ThreatMetrix und sammelt mehrere Browserdaten, um einen eindeutigen Fingerabdruck zu erstellen und Ihnen zuzuordnen.

Unter den gesammelten Browserdaten finden wir:

  • Eigenschaften des Navigator-Objekts (deviceMemory, hardwareConcurrency, languages, platform, userAgent, webdriver, usw.)
  • Fingerabdruck auf Leinwand
  • Zeit- und Leistungskontrollen
  • Plugin und Sprachaufzählung
  • Web-Mitarbeiter
  • Prüfung der Bildschirmabmessungen
  • und viele mehr

Eine Möglichkeit, diese Herausforderungen zu überwinden und das Scrapen in großem Maßstab fortzusetzen, ist die Verwendung einer Scraping-API. Diese Art von Diensten bietet eine einfache und zuverlässige Möglichkeit, auf Daten von Websites wie walmart.com zuzugreifen, ohne dass Sie einen eigenen Scraper entwickeln und pflegen müssen.

WebScrapingAPI ist ein Beispiel für ein solches Produkt. Sein Proxy-Rotationsmechanismus vermeidet CAPTCHAs gänzlich, und seine erweiterte Wissensbasis macht es möglich, die Browserdaten nach dem Zufallsprinzip so zu gestalten, dass sie wie ein echter Benutzer aussehen.

Die Einrichtung ist schnell und einfach. Alles, was Sie tun müssen, ist, ein Konto zu registrieren, damit Sie Ihren API-Schlüssel erhalten. Auf diesen können Sie über Ihr Dashboard zugreifen, und er wird zur Authentifizierung der von Ihnen gesendeten Anfragen verwendet.

blog-image

Da Sie Ihre Node.js-Umgebung bereits eingerichtet haben, können wir das entsprechende SDK verwenden. Führen Sie den folgenden Befehl aus, um es zu Ihren Projektabhängigkeiten hinzuzufügen:

npm install webscrapingapi

Jetzt müssen nur noch die bisherigen CSS-Selektoren an die API angepasst werden. Die leistungsstarke Funktion der Extraktionsregeln ermöglicht es, Daten ohne wesentliche Änderungen zu analysieren.

import webScrapingApiClient from 'webscrapingapi';

const client = new webScrapingApiClient("YOUR_API_KEY");

async function exampleUsage() {

const api_params = {

'render_js': 1,

'proxy_type': 'residential',

'timeout': 60000,

'extract_rules': JSON.stringify({

name: {

selector: 'h1[itemprop="name"]',

output: 'text',

},

rating: {

selector: 'span[class$="rating-number"]',

output: 'text',

},

reviews: {

selector: 'a[itemprop="ratingCount"]',

output: 'text',

},

price: {

selector: 'span[itemprop="price"]',

output: 'text',

},

images: {

selector: 'div[data-testid="media-thumbnail"] > img',

output: '@src',

all: '1'

},

details: {

selector: 'div.dangerous-html',

output: 'text',

all: '1'

}

})

}

const URL = "https://www.walmart.com/ip/Keter-Adirondack-Chair-Resin-Outdoor-Furniture-Teal/673656371"

const response = await client.get(URL, api_params)

if (response.success) {

console.log(response.response.data)

} else {

console.log(response.error.response.data)

}

}

exampleUsage();

Schlussfolgerung

Dieser Artikel bietet Ihnen einen Überblick über das Web Scraping von Walmart mit TypeScript und Puppeteer. Wir haben den Prozess der Einrichtung der erforderlichen Umgebung, die Identifizierung und Extraktion der Daten besprochen und Code-Schnipsel und Beispiele bereitgestellt, um Sie durch den Prozess zu führen.

Zu den Vorteilen des Scrapings von Walmart-Daten gehört es, wertvolle Einblicke in das Verbraucherverhalten, Markttrends, Preisüberwachung und vieles mehr zu gewinnen.

Darüber hinaus kann die Entscheidung für einen professionellen Scraping-Service eine effizientere Lösung sein, da er sicherstellt, dass der Prozess vollständig automatisiert ist und die möglichen Bot-Erkennungstechniken berücksichtigt.

Wenn Sie sich die Daten von Walmart zunutze machen, können Sie Ihr Unternehmen zum Erfolg führen und der Konkurrenz einen Schritt voraus sein. Denken Sie daran, immer die Nutzungsbedingungen der Website zu respektieren und nicht zu aggressiv zu scrapen, damit Sie nicht gesperrt werden.

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
LeitfädenAmazon Scraping API - Startanleitung

Scrapen Sie Amazon effizient mit der kosteneffizienten Lösung von Web Scraping API. Greifen Sie auf Echtzeitdaten zu, von Produkten bis zu Verkäuferprofilen. Jetzt anmelden!

WebscrapingAPI
Autorenavatar
WebscrapingAPI
8 Minuten lesen
Vorschaubild
LeitfädenWie man Amazon-Produktdaten scrappt: Ein umfassender Leitfaden zu Best Practices & Tools

Entdecken Sie die Komplexität des Scrapens von Amazon-Produktdaten mit unserem ausführlichen Leitfaden. Von Best Practices und Tools wie der Amazon Scraper API bis hin zu rechtlichen Aspekten erfahren Sie, wie Sie Herausforderungen meistern, CAPTCHAs umgehen und effizient wertvolle Erkenntnisse gewinnen.

Suciu Dan
Autorenavatar
Suciu Dan
15 Minuten lesen
Vorschaubild
AnwendungsfälleNutzung von Web Scraping für alternative Daten im Finanzwesen: Ein umfassender Leitfaden für Investoren

Erforschen Sie die transformative Kraft des Web Scraping im Finanzsektor. Von Produktdaten bis zur Stimmungsanalyse bietet dieser Leitfaden Einblicke in die verschiedenen Arten von Webdaten, die für Investitionsentscheidungen zur Verfügung stehen.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
13 Minuten lesen