Der Preis ist das einzige Feld auf einer Walmart-Produktseite, das sich ändert, während alles andere gleich bleibt. Titel, Marke und Modell sind stabil, aber die Zahl neben der Kaufen-Schaltfläche bewegt sich mit Aktionen, der Nachfrage und saisonalen Neustarts. Wenn Sie diese Bewegung verfolgen, einen Warenkorb vergleichen oder den Katalog eines Mitbewerbers beobachten möchten, müssen Sie denselben Preis immer wieder auslesen und jede Messung an einem Ort festhalten, an dem Sie sie visualisieren können.
Diese Anleitung zeigt Ihnen, wie Sie Walmart-Preise mit Python scrapen und in ein laufendes Protokoll umwandeln, das Sie analysieren können. Sie bauen einen kleinen, ausführbaren Scraper, der eine gerenderte Walmart-Produktseite über die Crawling API abruft, Titel und Preis mit BeautifulSoup aus dem HTML extrahiert und jeden Messwert mit einem Zeitstempel an JSON und CSV anhängt, damit Sie den Preis im Zeitverlauf verfolgen können. Die gesamte Anleitung beschränkt sich auf öffentliche Produkt- und Listingdaten, und der Abschnitt zur Rechtslage am Ende ist kein Standardtext, also lesen Sie ihn, bevor Sie das auf echte Mengen anwenden.
Was Sie bauen werden
Ein Python-Skript, das eine Walmart-Produkt-URL entgegennimmt, die gerenderte Seite über die Crawling API abruft, einen strukturierten Datensatz extrahiert und ihn an ein Preisprotokoll mit Zeitstempel anhängt. Als durchgängiges Beispiel verwenden wir ein generalüberholtes iPhone und ziehen diese Felder von jeder Produktseite:
- Titel der Produktname, zum Beispiel "Restored Apple iPhone 13, Carrier Unlocked, 128GB Red".
- Preis der aktuell angezeigte Preis neben der Kaufen-Schaltfläche.
- Rabatt der gesparte Betrag in Dollar, wenn das Listing einen anzeigt.
- Bewertung die durchschnittliche Sternebewertung, wenn das Produkt Rezensionen hat.
- Zeitstempel eine ISO-Zeit, die beim Scrapen hinzugefügt wird, sodass jeder Messwert ein Datenpunkt ist, den Sie visualisieren können.
Warum eine einfache Anfrage bei Walmart scheitert
Wenn Sie eine Walmart-Produkt-URL mit einem einfachen HTTP-Client anfragen, erhalten Sie eine Antwort mit Status 200 und fast keine Preisdaten im Body. Zwei Dinge arbeiten gegen Sie. Erstens baut Walmart seine Produktseiten clientseitig auf: Das initiale HTML ist ein Gerüst, das Titel, Preis und Bewertung erst nach dem Ausführen des Seiten-JavaScripts im Browser befüllt. Zweitens erkennt Walmart automatisierten Traffic schnell. Datacenter-IPs und Anfragemuster, die nicht wie ein echter Browser aussehen, werden mit einem CAPTCHA konfrontiert oder blockiert, bevor sie den gerenderten Preis je erreichen.
Ein funktionierender Preis-Scraper braucht also zwei Dinge in einer einzigen Anfrage: einen Browser, der die Seite tatsächlich rendert, und eine IP, die die Plattform als echten Käufer einordnet. Sie können das selbst mit einem Headless-Browser plus einem Pool rotierender Wohnproxies zusammenbauen, aber das Zusammenfügen und Instandhalten ist der Großteil der Arbeit. Die Crawling API bündelt beides in einem einzigen Aufruf: Sie senden ihr die URL mit einem JavaScript-Token, sie rendert die Seite hinter einer vertrauenswürdigen Wohn-IP und gibt Ihnen fertiges HTML zum Parsen zurück.
Crawlbase bietet zwei Token-Typen an. Das normale Token ruft statisches HTML ab; das JavaScript (JS)-Token rendert die Seite zuerst in einem echten Browser. Walmart lädt Preis und Bewertung clientseitig in die Seite, daher benötigen Sie hier das JS-Token. Die Verwendung des normalen Tokens liefert dasselbe leere Gerüst wie ein einfacher Abruf, und das Preis-Element ist schlicht nicht darin enthalten.
Voraussetzungen
Sie brauchen ein paar Dinge, bevor Sie Code schreiben. Keines davon dauert lange.
Python-Grundkenntnisse. Sie sollten in der Lage sein, ein Python-Skript zu schreiben und auszuführen sowie Pakete mit pip zu installieren. Wenn Sie neu in der Sprache sind, behandelt unsere Anleitung zum Scrapen einer Website mit Python die Grundlagen, die dieses Tutorial voraussetzt.
Python 3.8 oder höher. Bestätigen Sie Ihre Version mit python --version. Falls Sie es nicht haben, installieren Sie es von python.org oder über eine Distribution wie Anaconda.
Ein Crawlbase-Konto und JS-Token. Melden Sie sich an, öffnen Sie Ihr Dashboard und kopieren Sie Ihr JavaScript (JS)-Token von der Konto-Docs-Seite. Das kostenlose Kontingent umfasst bis zu 20.000 Anfragen ohne Kreditkarte, was ausreicht, um diesen Scraper zu erstellen und zu testen. Behandeln Sie das Token wie ein Passwort: Es authentifiziert Ihre Anfragen, halten Sie es also aus der Versionskontrolle heraus.
Projekt einrichten
Erstellen Sie eine virtuelle Umgebung, damit die Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die drei Bibliotheken, die der Scraper benötigt.
python --version python -m venv walmart_env source walmart_env/bin/activate pip install crawlbase beautifulsoup4 pandas
Unter Windows aktivieren Sie die Umgebung mit walmart_env\Scripts\activate statt der source-Zeile. Drei Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Client für die Crawling API, beautifulsoup4 parst das zurückgegebene HTML, damit Sie jedes Feld per CSS-Selektor herausziehen können, und pandas erledigt den CSV-Export am Ende, damit sich Ihre Preishistorie in jeder Tabellenkalkulation sauber öffnet.
Die Walmart-Produktseite verstehen
Eine Walmart-Produktseite enthält viel auf einem Bildschirm: einen Titel, ein Bild-Karussell, einen Preisblock, eine Sternebewertung mit Rezensionsanzahl, eine Beschreibung und Händlerdetails. Für das Preis-Tracking interessieren Sie nur wenige davon. Die relevanten Felder sind der Titel (damit Sie wissen, zu welchem Artikel ein Messwert gehört), der aktuelle Preis, der Rabatt- oder Ersparnisbetrag, wenn einer angezeigt wird, und die Bewertung.
Bevor Sie Selektoren schreiben, öffnen Sie eine Produktseite in Ihrem Browser, klicken Sie mit der rechten Maustaste auf den Preis und wählen Sie Untersuchen. Sie sehen den Preis über ein itemprop="price"-Attribut innerhalb eines price-wrap-Containers, den Titel in einem h1#main-title-Element und die Ersparnisse und Bewertungen hinter data-testid-Markierungen. Diese Attribute sind Ihr Ziel. Walmarts Utility-Klassennamen ändern sich häufig, aber die semantischen Attribute sind dauerhafter, also stützen Sie sich wo möglich auf sie.
Schritt 1: Die gerenderte Produktseite abrufen
Beginnen Sie damit, die fertige Seite zu holen. Importieren Sie die CrawlingAPI-Klasse, initialisieren Sie sie mit Ihrem JS-Token und fordern Sie die Produkt-URL an. Das Prüfen des Statuscodes vor dem Parsen hält Fehler sichtbar statt lautlos.
from crawlbase import CrawlingAPI api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"}) def crawl(product_url): options = {"ajax_wait": "true", "page_wait": 3000} response = api.get(product_url, options) if response["status_code"] == 200: return response["body"].decode("latin1") print(f"Request failed: {response['status_code']}") return None if __name__ == "__main__": url = "https://www.walmart.com/ip/Restored-Apple-iPhone-13-Carrier-Unlocked-128-GB-Red-Refurbished/462799546" html = crawl(url) print(html[:500] if html else "No HTML returned")
Die beiden Warte-Optionen sind wichtig für ein clientseitig gerendertes Ziel wie dieses. ajax_wait weist die API an, auf das Fertigladen asynchroner Inhalte zu warten, und page_wait hält eine feste Anzahl von Millisekunden nach dem Laden inne, damit der Preisblock erscheint, bevor die Seite aufgenommen wird. Drei Sekunden sind ein vernünftiger Ausgangspunkt; erhöhen Sie den Wert, wenn der Preis fehlt. Der Body wird als latin1 dekodiert, da Walmart-Seiten Zeichen enthalten können, an denen die strikte UTF-8-Dekodierung scheitert. Führen Sie das Skript aus, und Sie sollten echtes Produkt-Markup sehen, nicht das leere Gerüst, das ein einfacher Abruf liefert. Das bestätigt, dass das Rendering funktioniert, bevor Sie einen einzigen Selektor schreiben.
Der Preisblock existiert nur, nachdem Walmart die Seite hinter einer vertrauenswürdigen IP gerendert hat, und genau darauf stützt sich die obige crawl-Funktion. Die Crawling API nimmt ein JS-Token, führt die Seite in einem echten Browser aus, rotiert serverseitig durch Wohn-IPs und liefert Ihnen fertiges HTML, damit Sie keine eigene Headless-Flotte und keinen Proxy-Pool betreiben müssen. Testen Sie es zuerst mit einer Produkt-URL im kostenlosen Kontingent.
Schritt 2: Titel und Preis mit BeautifulSoup extrahieren
Mit dem gerenderten HTML laden Sie es in BeautifulSoup und ziehen jedes Feld per Selektor heraus. Der Preis befindet sich in einem Span mit itemprop="price" innerhalb des price-wrap-Containers, der Titel in h1#main-title und die Ersparnisse und Bewertungen hinter ihren data-testid-Markierungen. Ein kleiner Helfer gibt eine leere Zeichenkette zurück, wenn ein Element fehlt, damit ein abwesendes Feld den Lauf nicht zum Absturz bringt.
from bs4 import BeautifulSoup from datetime import datetime, timezone def text_of(soup, selector): el = soup.select_one(selector) return el.get_text(strip=True) if el else "" def parse_product(html): soup = BeautifulSoup(html, "html.parser") return { "title": text_of(soup, "h1#main-title"), "price": text_of(soup, 'span[data-testid="price-wrap"] span[itemprop="price"]'), "discount": text_of(soup, 'div[data-testid="dollar-saving"] span:last-child'), "rating": text_of(soup, 'div[data-testid="reviews-and-ratings"] span.rating-number'), "scraped_at": datetime.now(timezone.utc).isoformat(), }
Der text_of-Helfer fragt ein einzelnes Element ab und gibt eine leere Zeichenkette zurück, wenn es fehlt, anstatt bei einem .get_text()-Aufruf gegen nichts zu scheitern. Das hält die Extraktion robust, wenn ein Feld fehlt, was häufig vorkommt, da nicht jedes Listing einen Rabatt oder eine Bewertung hat. Der Preis kommt aus dem itemprop="price"-Span, der kanonischen Stelle, an der Walmart den aktuellen Preis auszeichnet, und scraped_at stempelt jeden Datensatz mit dem Zeitpunkt des Auslesens. Dieser Zeitstempel macht aus einem einmaligen Scrape eine Preisreihe, die Sie später visualisieren können.
Walmarts Utility-Klassennamen ändern sich ohne Ankündigung, und die data-testid-Werte am Preis- und Ersparnis-Block wechseln gelegentlich ebenfalls. Betrachten Sie die obigen Selektoren als Ausgangsvorlage, nicht als Vertrag. Wenn der Preis auf einer Seite, auf der Sie wissen, dass er angezeigt wird, leer zurückkommt, untersuchen Sie die Live-Produktseite in den Entwicklertools Ihres Browsers erneut und aktualisieren Sie den Selektor. Periodische Selektor-Wartung ist normal für jeden produktiven Scraper, kein Zeichen, dass etwas kaputt ist.
Schritt 3: Jeden Messwert an ein Preisprotokoll anhängen
Verbinden Sie nun den Abruf und das Parsen zu einem ausführbaren Skript und hängen Sie jeden Messwert an eine JSON-Datei und eine CSV an. Das Anhängen statt Überschreiben ist der eigentliche Punkt: Jeder Lauf fügt eine datierte Zeile pro Produkt hinzu, und über Tage oder Wochen werden diese Zeilen zu einer Preishistorie, die Sie visualisieren können.
import json import os import pandas as pd from bs4 import BeautifulSoup from datetime import datetime, timezone from crawlbase import CrawlingAPI api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"}) PRODUCTS = [ "https://www.walmart.com/ip/Restored-Apple-iPhone-13-Carrier-Unlocked-128-GB-Red-Refurbished/462799546", ] def crawl(product_url): options = {"ajax_wait": "true", "page_wait": 3000} response = api.get(product_url, options) if response["status_code"] == 200: return response["body"].decode("latin1") print(f"Request failed: {response['status_code']}") return None def text_of(soup, selector): el = soup.select_one(selector) return el.get_text(strip=True) if el else "" def parse_product(html, url): soup = BeautifulSoup(html, "html.parser") return { "title": text_of(soup, "h1#main-title"), "price": text_of(soup, 'span[data-testid="price-wrap"] span[itemprop="price"]'), "discount": text_of(soup, 'div[data-testid="dollar-saving"] span:last-child'), "rating": text_of(soup, 'div[data-testid="reviews-and-ratings"] span.rating-number'), "url": url, "scraped_at": datetime.now(timezone.utc).isoformat(), } def append_json(record, path="walmart_prices.json"): history = [] if os.path.exists(path): with open(path) as f: history = json.load(f) history.append(record) with open(path, "w") as f: json.dump(history, f, indent=2) return history def main(): for url in PRODUCTS: html = crawl(url) if not html: continue record = parse_product(html, url) append_json(record) print(json.dumps(record, indent=2)) history = json.load(open("walmart_prices.json")) pd.DataFrame(history).to_csv("walmart_prices.csv", index=False) if __name__ == "__main__": main()
Die Funktion append_json liest die bestehende Historie, fügt den neuen Messwert hinzu und schreibt die gesamte Liste zurück, sodass die JSON-Datei bei jedem Lauf um einen Datensatz wächst. Nach der Schleife baut das Skript walmart_prices.csv aus dieser Historie mit pandas neu auf, was Ihnen eine flache Tabelle gibt, die sich in jeder Tabellenkalkulation zur Visualisierung öffnen lässt. Fügen Sie eine URL zur PRODUCTS-Liste hinzu, und derselbe Code verfolgt mehrere Artikel gleichzeitig. Um Messwerte im Zeitverlauf zu sammeln, planen Sie dieses Skript als täglichen Cron-Job, und jeder Lauf fügt eine frisch datierte Zeile pro Produkt an.
Wie die Ausgabe aussieht
Führen Sie das vollständige Skript mit python scraper.py aus, und jeder Messwert wird als JSON ausgegeben und in Ihrem Preisprotokoll gespeichert. Nach ein paar Läufen über einige Tage hält die JSON-Datei eine kleine Reihe pro Produkt.
[ { "title": "Restored Apple iPhone 13, Carrier Unlocked, 128 GB Red (Refurbished)", "price": "$449.00", "discount": "$200.00", "rating": "(4.4)", "url": "https://www.walmart.com/ip/...462799546", "scraped_at": "2026-06-09T14:05:33+00:00" }, { "title": "Restored Apple iPhone 13, Carrier Unlocked, 128 GB Red (Refurbished)", "price": "$429.00", "discount": "$220.00", "rating": "(4.4)", "url": "https://www.walmart.com/ip/...462799546", "scraped_at": "2026-06-10T14:04:11+00:00" } ]
Die beiden Datensätze teilen sich Titel und URL, unterscheiden sich aber bei Preis und Datum, was genau die Form ist, die das Preis-Tracking benötigt. Von hier aus können Sie walmart_prices.csv in pandas laden, um den Mindest-, Höchst- und Durchschnittspreis pro Produkt zu berechnen, einen Rückgang unter einen Schwellenwert zu markieren oder die Reihe zu visualisieren. Wenn Sie dieses Protokoll in eine Nebeneinanderdarstellung über mehrere Händler umwandeln möchten, setzt der Begleitleitfaden zum Erstellen eines Preisvergleichstools dort an, wo dieser endet.
Preise über viele Produkte scrapen
Ein einzelnes Listing zu verfolgen ist eine Demo; ein echter Auftrag beobachtet einen Warenkorb von Produkten, und oft haben Sie die Produkt-URLs nicht von vornherein. Um diesen Warenkorb aufzubauen, scrapen Sie zuerst eine Suchergebnisseite, sammeln die Produkt-Links und führen dann den obigen Preis-Scraper gegen jeden davon aus. Das Extrahieren dieser Links von einer Walmart-Suchseite ist eine eigene Aufgabe, die in unserem Leitfaden zum Scrapen von Walmart-Suchseiten mit Python ausführlich behandelt wird. Sobald Sie die URLs haben, fügen Sie sie in die PRODUCTS-Liste ein, und die Schleife liest einen Preis für jede.
Takten Sie die Schleife, damit Sie Walmart nicht in einem engen Burst bombardieren. Eine kurze Verzögerung zwischen Produktanfragen hält Ihre Anfragerate niedrig und den Lauf gesund, dieselbe Disziplin, die jedes schwierige kommerzielle Ziel belohnt.
import time def track_prices(urls): readings = [] for url in urls: html = crawl(url) if not html: continue record = parse_product(html, url) append_json(record) readings.append(record) print(f"{record['title'][:40]}: {record['price']}") time.sleep(2) return readings
Das time.sleep(2) zwischen Produkten ist die Untergrenze, nicht die Obergrenze: Erhöhen Sie es für größere Warenkörbe. Da append_json nach jedem Produkt schreibt, bewahrt ein Lauf, der auf halbem Weg scheitert, die bereits gesammelten Messwerte, sodass Sie einen langen Job nicht wegen einer einzigen schlechten Seite verlieren.
Entsperrt bleiben
Selbst mit erledtem Rendering beobachtet Walmart Scraper-artigen Traffic. Einige Gewohnheiten halten einen Lauf gesund, und sie gelten für jedes schwierige kommerzielle Ziel.
- Takten Sie Ihre Anfragen. Spreizen Sie Anfragen mit einer Verzögerung zwischen Produkten und vermeiden Sie es, dasselbe Listing häufiger zu scrapen als nötig. Für das Preis-Tracking reicht einmal oder zweimal täglich pro Produkt in der Regel aus, um jede bedeutsame Änderung zu erfassen.
- Vertrauen Sie auf Rotation. Ein Pool von Wohn-IPs verteilt Anfragen auf viele echte Nutzeradressen, sodass keine einzelne ein Ratenlimit auslöst. Die Crawling API erledigt das für Sie; wenn Sie einen eigenen Stack aufbauen, ist das der Teil, den Sie richtig machen müssen.
- Lesen Sie die Statuscodes. Ein Lauf, der anfängt, Herausforderungen oder Fehler zurückzugeben, teilt Ihnen mit, dass die aktuelle Rate oder IP-Klasse nicht mehr ausreicht. Behandeln Sie das als Signal zum Zurückfahren, nicht als Rauschen, das Sie ignorieren können.
Das umfassendere Playbook finden Sie in unserem Leitfaden dazu, wie Sie Websites scrapen, ohne blockiert zu werden. Wenn Sie ein einzelnes Listing detailliert scrapen möchten, einschließlich Varianten- und Spezifikationsdaten, geht der Begleitleitfaden zum Scrapen einer Walmart-Produktseite mit Selenium über den Preis hinaus, und das übergeordnete Argument für das Verfolgen von Mitbewerberpreisen ist in Web Scraping für Preisintelligenz dargelegt.
Ist es legal, Walmart zu scrapen?
Ob das Scrapen von Walmart erlaubt ist, hängt von Walmarts Nutzungsbedingungen, Ihrer Rechtsordnung und dem ab, was Sie mit den Daten machen. Walmarts Bedingungen schränken automatisierten Zugriff ein, sodass Scraping gegen diese Bedingungen verstoßen kann, egal wie sorgfältig Ihr Werkzeug ist. Keiner der hier verwendeten Code ändert daran etwas; er macht lediglich den technischen Teil zum Funktionieren. Lesen Sie Walmarts Nutzungsbedingungen und seine robots.txt, und behandeln Sie beides als Grenze dessen, was Sie sammeln.
Ein paar Grundsätze, an denen es sich lohnt festzuhalten. Sammeln Sie nur öffentliche Daten: die Produkttitel, Preise, Rabatte und Bewertungen, die jeder auf einer Produkt- oder Suchseite ohne Konto sehen kann. Respektieren Sie Walmarts angegebene Ratenerwartungen und halten Sie Ihr Anfragevolumen so niedrig, dass Sie seine Server nicht belasten, was beim Preis-Tracking einfach ist, da ein Messwert täglich pro Produkt ausreicht. Vermeiden Sie personenbezogene Daten, einschließlich allem, was mit identifizierbaren Käufern, Rezensenten oder Verkäufern über das öffentlich Gelistete hinaus in Verbindung steht. Wenn Sie die Preise kommerziell weiterverwenden möchten, holen Sie die Erlaubnis oder eine offizielle Vereinbarung ein, anstatt zu unterstellen, dass Schweigen Zustimmung bedeutet.
Diese Anleitung beschränkt sich bewusst auf öffentliche Produkt- und Listingseiten, weil das die Grenze ist, die die Arbeit verteidigbar macht. Sie deckt nichts hinter einem Login ab, keine Konto- oder Bestelldaten, keine personenbezogenen Daten, keine Zahlungs- oder Kassenabläufe und keinen Versuch, die Authentifizierung zu umgehen. Für lizenzierten oder Massenzugriff bietet Walmart offizielle APIs und Partnerprogramme, und das ist das richtige Werkzeug, wenn Sie große Mengen, garantierte Struktur oder kommerzielle Rechte benötigen. Wenn Ihr Projekt mehr als öffentliche Preise erfordert, sind eine offizielle API oder eine Datenvereinbarung der richtige Weg, kein cleverer Scraper.
Wichtigste Erkenntnisse
- Walmart-Preise werden clientseitig gerendert. Ein einfacher Abruf gibt ein leeres Gerüst zurück, daher müssen Sie die Seite mit einem JS-Token rendern, bevor das Preis-Element zum Parsen existiert.
-
Zielen Sie auf dauerhafte Attribute. Ziehen Sie den Preis aus dem
itemprop="price"-Span und den Titel aush1#main-title; erwarten Sie, dass die umgebenden Klassennamen sich verschieben, und untersuchen Sie die Seite erneut, wenn ein Feld leer zurückkommt. -
Ein Zeitstempel macht aus einem Scrape eine Reihe. Stempeln Sie jeden Messwert mit
scraped_atund hängen Sie an statt zu überschreiben, und Ihre JSON und CSV werden zu einer Preishistorie, die Sie visualisieren können. - Skalieren Sie von der Suche zum Warenkorb. Sammeln Sie Produkt-URLs von einer Suchseite, speisen Sie sie in die Schleife ein, takten Sie Anfragen mit einer Verzögerung und führen Sie sie nach einem Tagesplan aus, um im Zeitverlauf zu verfolgen.
- Bleiben Sie bei öffentlichen Daten. Respektieren Sie Walmarts Nutzungsbedingungen und robots.txt, bevorzugen Sie eine offizielle Walmart-API für lizenzierte oder Massendaten und berühren Sie niemals Konten, Bestellungen oder personenbezogene Daten.
Häufig gestellte Fragen
Warum gibt eine einfache Anfrage keinen Preis von Walmart zurück?
Weil Walmart den Preis clientseitig mit JavaScript in die Seite lädt. Das initiale HTML ist ein Gerüst, und das Preis-Element erscheint erst, nachdem die Skripte der Seite in einem Browser ausgeführt wurden, daher gibt eine rohe HTTP-Anfrage Status 200 mit leerem Preis zurück. Um es zu lesen, müssen Sie die Seite zuerst rendern, was das JS-Token der Crawling API für Sie erledigt.
Wie verfolge ich einen Walmart-Preis im Zeitverlauf?
Führen Sie den Scraper nach einem Zeitplan aus, einmal oder zweimal täglich, und hängen Sie jeden Messwert mit einem Zeitstempel an dieselbe JSON- und CSV-Datei an. Der append_json-Helfer in dieser Anleitung fügt pro Lauf einen datierten Datensatz hinzu statt zu überschreiben, sodass die Datei zu einer Preisreihe wird. Laden Sie diese CSV in pandas, um Min, Max und Durchschnitt zu berechnen oder einen Rückgang unter einen Schwellenwert zu markieren.
Kann ich Preise für viele Produkte gleichzeitig scrapen?
Ja. Fügen Sie jede Produkt-URL zur PRODUCTS-Liste hinzu oder übergeben Sie eine URL-Liste an die Funktion track_prices, und die Schleife liest einen Preis für jede. Wenn Sie die URLs nicht von vornherein haben, scrapen Sie zuerst eine Walmart-Suchseite, um Produkt-Links zu sammeln, und speisen Sie diese Links dann in die Schleife ein. Halten Sie eine kurze Verzögerung zwischen Anfragen, um den Lauf zu takten.
Mein Preis-Selektor gibt eine leere Zeichenkette zurück. Was hat sich geändert?
Höchstwahrscheinlich Walmarts Markup. Die Utility-Klassennamen ändern sich ohne Ankündigung, und die data-testid-Werte rund um den Preis- und Ersparnis-Block verschieben sich gelegentlich ebenfalls. Untersuchen Sie eine Live-Produktseite in den Entwicklertools Ihres Browsers erneut, bevorzugen Sie die dauerhaften itemprop="price"- und h1#main-title-Ziele wo möglich, und aktualisieren Sie die Selektoren. Periodische Wartung ist normal für jeden produktiven Scraper.
Soll ich Preise in CSV, JSON oder einer Datenbank speichern?
Für wenige Produkte, die über Wochen verfolgt werden, sind die JSON- und CSV-Dateien in dieser Anleitung ausreichend und öffnen sich überall. Wenn die Historie wächst oder Sie Hunderte von Artikeln verfolgen, wechseln Sie zu einer Datenbank wie SQLite oder PostgreSQL, damit Sie nach Datumsbereich und Produkt abfragen können, ohne die gesamte Datei zu laden. Die Datensatzform bleibt dieselbe; nur die Speicherschicht ändert sich.
Wie vermeide ich eine Blockierung beim Scrapen von Walmart-Preisen?
Halten Sie Ihre Pro-IP-Anfragerate niedrig, fügen Sie eine Verzögerung zwischen Produkten hinzu, scrapen Sie dasselbe Listing nicht häufiger als nötig und leiten Sie durch rotierende Wohn-IPs, damit keine einzelne Adresse ein Ratenlimit auslöst. Die Crawling API verwaltet Rotation und einen vertrauenswürdigen IP-Pool für Sie; wenn Sie Ihren eigenen Stack aufbauen, ist das der Teil, in den Sie investieren sollten. Beobachten Sie die Statuscodes und fahren Sie zurück, wenn Sie anfangen, Herausforderungen zu sehen.
Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.
Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.
