Walmart ist einer der größten Online-Händler der Welt, und die Produktdaten, die er bereitstellt, Titel, Preise, Bewertungen und Verfügbarkeit, sind tatsächlich nützlich, wenn Sie Preisrecherchen durchführen, einen Markt beobachten oder ein Handelsprojekt aufbauen. Der Haken ist, dass Walmart einen Großteil seiner Inhalte clientseitig rendert und Bots stark abwehrt, sodass ein einfacher HTTP-Abruf Ihnen eine leere Hülle oder eine Blockseite liefert. Dieser Leitfaden zeigt Ihnen, wie Sie eine Walmart-Produktseite mit Selenium scrapen: ein kleines, lauffähiges Python-Projekt, das headloses Firefox steuert, seinen Traffic durch den Crawlbase Smart AI Proxy leitet, damit die Anfrage wie ein echter Besucher aussieht, die öffentlichen Produktfelder extrahiert und sie auf die Festplatte schreibt.
Um dies ehrlich und vertretbar zu halten, beschränkt sich die gesamte Anleitung auf öffentliche Daten: den Produkttitel, Preis, Bewertung und die Rezensionsanzahl, die jeder ohne Anmeldung sehen kann. Sie behandelt weder Benutzerkonten, login-gesperrte Inhalte, Checkout-Aktionen noch personenbezogene Daten. Der Abschnitt zur Rechtslage am Ende ist kein Standardtext, also lesen Sie ihn, bevor Sie dies auf echtes Produktionsvolumen anwenden.
Warum Selenium und einen Proxy zusammen verwenden
Selenium ist ein Browser-Automatisierungswerkzeug. Es steuert einen echten Browser programmatisch, führt also das JavaScript der Seite aus und sieht dasselbe gerenderte DOM, das ein Mensch sehen würde. Das löst die Rendering-Hälfte des Problems: Walmart füllt seine Produktdetails clientseitig, und Selenium wartet auf das Erscheinen dieser Elemente, bevor Sie sie auslesen. Was Selenium nicht löst, ist die Netzwerkhälfte. Standardmäßig sendet es Anfragen von Ihrer eigenen IP, und Walmart kennzeichnet Datacenter- und Wiederholungsbesucher-Traffic schnell und fordert oder blockiert ihn, bevor die Seite je fertig geladen ist.
Das ist die Lücke, die ein Proxy füllt. Der Crawlbase Smart AI Proxy ist ein einzelner Proxy-Endpunkt, der Anfragen serverseitig über einen Pool von Residential-IPs rotiert. Sie zeigen Firefox einmal darauf, und jede Anfrage, die Selenium stellt, geht über eine frische, echte Benutzeradresse. Sie erhalten das Rendering von Selenium und das Entsperren vom Proxy, jedes Werkzeug erledigt den Teil, für den es tatsächlich gut ist. Sie könnten IP-Rotation selbst mit einer Liste von rotierenden Residential-Proxys zusammenstellen, aber diesen Pool gesund zu halten und ihn korrekt zu rotieren, ist der größte Teil der Arbeit, die der Smart AI Proxy bereits für Sie erledigt.
Behalten Sie die Grenze im Kopf. Selenium rendert und liest die Seite: Es führt das JavaScript aus, wartet auf Elemente und zieht die Felder. Der Smart AI Proxy verwaltet das Netzwerk: Er rotiert Residential-IPs, sodass die Anfrage wie ein echter Besucher und nicht wie ein Bot aussieht. Diese Verantwortlichkeiten zu vermischen oder den Proxy ganz wegzulassen, ist der häufigste Grund, warum ein Walmart-Scraper leere Felder oder eine Blockseite zurückgibt.
Was Sie bauen werden
Ein kleines, lauffähiges Python-Skript, das eine Walmart-Produkt-URL entgegennimmt, headloses Firefox startet, das so konfiguriert ist, dass es durch den Smart AI Proxy geht, auf das Rendern von Titel und Preis wartet, die öffentlichen Felder extrahiert, bei Timeout wiederholt und das strukturierte Ergebnis ausgibt. Sie können jeden Codeausschnitt wie angegeben ausführen; ersetzen Sie einfach Ihr eigenes Zugriffstoken und die Produkt-URL.
Firefox, Python und geckodriver einrichten
Selenium benötigt drei Dinge auf Ihrem Rechner: einen Browser zum Steuern, die Python-Bindings und den Treiber, der sie verbindet. Für Firefox ist dieser Treiber geckodriver.
Installieren Sie zunächst Mozilla Firefox von der offiziellen Website, falls Sie es noch nicht haben. Bestätigen Sie dann, dass Sie Python 3.8 oder höher haben.
python --version
Laden Sie als Nächstes geckodriver herunter. Es ist die Brücke zwischen Selenium und Firefox: Gehen Sie zur geckodriver-Releases-Seite auf GitHub, holen Sie sich den Build für Ihr Betriebssystem und extrahieren Sie ihn an einen Ort, auf den Sie verweisen können. Notieren Sie den Pfad, da das Skript ihn benötigt. Modernes Selenium kann geckodriver oft automatisch finden, wenn es in Ihrem PATH liegt, aber einen expliziten Pfad zu übergeben ist die zuverlässige Standardmethode und der in diesem Leitfaden verwendete Ansatz.
Erstellen Sie jetzt eine virtuelle Umgebung, damit Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die Bibliotheken.
python -m venv walmart_env source walmart_env/bin/activate pip install selenium random-user-agent
Unter Windows aktivieren Sie die Umgebung mit walmart_env\Scripts\activate anstelle der source-Zeile. Zwei Abhängigkeiten erledigen die Arbeit: selenium steuert Firefox, und random-user-agent generiert realistische User-Agent-Strings, sodass jede Sitzung etwas anders aussieht. Der User Agent ist eine kleine Maßnahme; der Proxy übernimmt die schwere Arbeit, nicht blockiert zu werden.
Ihren Smart AI Proxy-Endpunkt holen
Erstellen Sie ein Crawlbase-Konto und öffnen Sie das Dashboard, um Ihr Smart AI Proxy-Zugriffstoken zu finden. Der Proxy ist ein einzelner Endpunkt, auf den Sie Firefox zeigen, und er hat die folgende Form.
http://[email protected]:8012
Der Host ist smartproxy.crawlbase.com, der Port ist 8012, und Ihr Token steht in der Benutzerposition vor dem @. Jede Anfrage, die Firefox über diesen Endpunkt sendet, erhält eine rotierende Residential-IP, sodass Sie selbst keine Proxy-Liste verwalten müssen. Der kostenlose Tarif reicht aus, um dieses gesamte Tutorial gegen eine öffentliche Seite auszuführen, bevor Sie sich für einen Plan entscheiden.
Die folgenden Beispiele fügen das Token zur Lesbarkeit ein, aber laden Sie es im echten Code aus einer Umgebungsvariablen oder einer .env-Datei, anstatt es zu committen. Ein geleaktes Proxy-Token ist ein geleaktes Credential, und wer es hat, kann Ihr Kontingent verbrauchen.
Headloses Firefox für den Smart AI Proxy konfigurieren
Das ist der Kern des Setups: Ein Firefox-Options-Objekt erstellen, das headless läuft, einen zufälligen User Agent trägt und jede Anfrage durch den Smart AI Proxy leitet. Firefox nimmt Proxy-Einstellungen als Browser-Präferenzen an, also setzen Sie den Proxy-Typ auf manuell und verweisen Sie jedes Protokoll auf den Proxy-Host und -Port.
import selenium.webdriver as webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.options import Options from random_user_agent.user_agent import UserAgent from random_user_agent.params import SoftwareName, OperatingSystem user_agent_rotator = UserAgent( software_names=[SoftwareName.FIREFOX.value], operating_systems=[OperatingSystem.WINDOWS.value, OperatingSystem.LINUX.value], limit=100, ) user_agent = user_agent_rotator.get_random_user_agent() firefox_options = Options() firefox_options.add_argument("--headless") firefox_options.add_argument("--no-sandbox") firefox_options.add_argument("--window-size=1420,1080") firefox_options.add_argument("--disable-gpu") firefox_options.add_argument(f"user-agent={user_agent}") proxy_host = "http://[email protected]" proxy_port = 8012 firefox_options.set_preference("network.proxy.type", 1) firefox_options.set_preference("network.proxy.http", proxy_host) firefox_options.set_preference("network.proxy.http_port", proxy_port) firefox_options.set_preference("network.proxy.ssl", proxy_host) firefox_options.set_preference("network.proxy.ssl_port", proxy_port) firefox_options.set_preference("network.http.use-cache", False)
Das Flag --headless führt Firefox ohne sichtbares Fenster aus, was Sie auf einem Server möchten und was die Ressourcennutzung niedrig hält. network.proxy.type auf 1 gesetzt bedeutet "manuelle Proxy-Konfiguration", und die folgenden Zeilen leiten HTTP- und HTTPS (SSL)-Traffic durch den Smart AI Proxy-Host und -Port. Den Cache zu deaktivieren stellt sicher, dass jeder Lauf eine frische Seite abruft statt veraltete Inhalte zu liefern. Die ältere Version dieses Setups konfigurierte auch FTP- und SOCKS-Präferenzen, aber eine Walmart-Produktseite ist einfaches HTTPS, sodass diese als Lärm weggelassen werden können.
Prüfen, ob der Proxy funktioniert
Bevor Sie irgendetwas auf Walmart richten, bestätigen Sie, dass der Traffic tatsächlich über den Proxy läuft. Die einfachste Prüfung ist, einen Dienst aufzurufen, der die anfragende IP zurückspiegelt. Laden Sie httpbin.org/ip und geben Sie den Body aus: Wenn Rendering und Routing funktionieren, sehen Sie eine der Residential-Adressen des Proxys und nicht Ihre eigene.
import os from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC driver_path = os.path.join(os.getcwd(), "drivers", "geckodriver") service = Service(driver_path) driver = webdriver.Firefox(service=service, options=firefox_options) driver.get("https://httpbin.org/ip") try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "body")) ) print(driver.find_element(By.TAG_NAME, "body").text) finally: driver.quit()
Hier hält WebDriverWait in Verbindung mit presence_of_element_located an, bis das body-Element der Seite erscheint, bis zu zehn Sekunden, sodass Sie das DOM nicht lesen, bevor es existiert. Der finally-Block schließt immer die Browser-Sitzung, auch wenn der Wartezeitraum abläuft, was verhindert, dass verwaiste Firefox-Prozesse sich ansammeln. Ein erfolgreicher Lauf gibt etwas wie das Folgende aus.
{ "origin": "51.15.242.202" }
Wenn Sie eine wie eine Residential-IP aussehende Adresse sehen, die nicht Ihre eigene ist, funktioniert das Routing und Sie sind bereit, dies auf ein echtes Ziel zu richten. Wenn Sie Ihre eigene Adresse sehen, haben die Proxy-Präferenzen nicht gegriffen, also überprüfen Sie nochmals Host, Port und Token, bevor Sie weitermachen.
Selenium rendert Seiten, verbirgt aber Ihre IP nicht. Der Smart AI Proxy schließt diese Lücke als einzelner Drop-in-Endpunkt: Zeigen Sie Firefox einmal darauf und jede Anfrage rotiert serverseitig durch Residential-IPs, sodass Walmart Ihren Scraper wie einen echten Besucher statt einen Bot liest. Keine Proxy-Liste zu verwalten, keine Rotationslogik zu schreiben. Testen Sie es zunächst auf dem kostenlosen Tarif gegen eine öffentliche Produktseite.
Die Walmart-Produktseite verstehen
Um Felder von einer Walmart-Produktseite zu ziehen, müssen Sie wissen, wo sie im gerenderten DOM liegen. Der sauberste Weg, aktuelle Selektoren zu finden, ist, eine Produktseite in Ihrem Browser zu öffnen, mit der rechten Maustaste auf den gewünschten Wert zu klicken und Inspizieren zu wählen. Die Felder, die dieser Leitfaden extrahiert, und geeignete Selektoren dafür sind unten aufgeführt.
-
Produkttitel das auffälligste Element auf der Seite, ein
h1mit einemitemprop="name"-Attribut, sodass der XPath//h1[@itemprop="name"]es anvisiert. -
Produktpreis im Kaufbereich gerendert, häufig in einem Element mit
itemprop="price", erreichbar mit//span[@itemprop="price"]. - Bewertung die durchschnittliche Sternebewertung, normalerweise in einem aria-Label oder einem speziellen Bewertungselement nahe dem Titel.
- Rezensionsanzahl die Anzahl der Kundenrezensionen, typischerweise ein Link oder Span neben der Bewertung.
Walmart ändert sein Markup und Attributnamen ohne Vorankündigung, also behandeln Sie die obigen Selektoren als Ausgangspunkt, nicht als Vertrag. Wenn die Extraktion leere Strings zurückgibt, prüfen Sie die Live-Seite in den Dev Tools Ihres Browsers und aktualisieren Sie die Selektoren. Das ist normale Pflege für jeden Produktions-Scraper, kein Zeichen dafür, dass etwas kaputt ist.
Die Produktfelder extrahieren
Mit verifizierten Routing- und vorhandenen Selektoren schreiben Sie die Funktion, die zu einer Produkt-URL navigiert, auf das Rendern von Titel und Preis wartet und die Felder liest. Eine Wiederholungsschleife umschließt das Ganze, damit ein einzelner Timeout oder ein vorübergehender Block den Lauf nicht abbricht; sie versucht es bis zu einem konfigurierbaren Limit mit einer frischen Browser-Sitzung erneut.
from selenium.common.exceptions import TimeoutException from time import sleep TITLE_XPATH = '//h1[@itemprop="name"]' PRICE_XPATH = '//span[@itemprop="price"]' def scrape_walmart_product(url, max_retries=3, retry_delay=5): for attempt in range(1, max_retries + 1): driver = webdriver.Firefox(service=service, options=firefox_options) try: driver.get(url) WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.XPATH, TITLE_XPATH)) ) title = driver.find_element(By.XPATH, TITLE_XPATH).text.strip() price = read_optional(driver, PRICE_XPATH) return {"url": url, "title": title, "price": price} except TimeoutException: print(f"Timeout on attempt {attempt} for {url}") except Exception as error: print(f"Error on attempt {attempt}: {error}") finally: driver.quit() if attempt < max_retries: print(f"Retrying in {retry_delay}s...") sleep(retry_delay) return None def read_optional(driver, xpath): try: return driver.find_element(By.XPATH, xpath).text.strip() except Exception: return None
Einige Entscheidungen machen dies robust. Das Skript wartet auf den Titel, bevor es irgendetwas liest, weil der Titel zuverlässig auf jeder Produktseite vorhanden ist und signalisiert, dass die Seite gerendert wurde. Preis, Bewertung und Rezensionsanzahl werden durch einen kleinen read_optional-Helfer gelesen, der None zurückgibt, wenn ein Element fehlt, statt zu werfen, da nicht jedes Produkt jedes Feld trägt. Und jeder Versuch erstellt und beendet seinen eigenen Browser, sodass ein Wiederholungsversuch mit einer sauberen Sitzung mit einer frischen Proxy-IP beginnt statt eine vergiftete zu verwenden.
Das vollständige Skript
Hier ist alles in einer lauffähigen Datei zusammengeführt. Tragen Sie Ihr Zugriffstoken ein, setzen Sie den geckodriver-Pfad, ändern Sie die Produkt-URL und führen Sie es aus.
import os import json from time import sleep import selenium.webdriver as webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException from random_user_agent.user_agent import UserAgent from random_user_agent.params import SoftwareName, OperatingSystem ACCESS_TOKEN = os.getenv("CRAWLBASE_PROXY_TOKEN", "YOUR_ACCESS_TOKEN") PROXY_HOST = f"http://{ACCESS_TOKEN}@smartproxy.crawlbase.com" PROXY_PORT = 8012 TITLE_XPATH = '//h1[@itemprop="name"]' PRICE_XPATH = '//span[@itemprop="price"]' def build_options(): rotator = UserAgent( software_names=[SoftwareName.FIREFOX.value], operating_systems=[OperatingSystem.WINDOWS.value, OperatingSystem.LINUX.value], limit=100, ) user_agent = rotator.get_random_user_agent() options = Options() options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--window-size=1420,1080") options.add_argument("--disable-gpu") options.add_argument(f"user-agent={user_agent}") options.set_preference("network.proxy.type", 1) options.set_preference("network.proxy.http", PROXY_HOST) options.set_preference("network.proxy.http_port", PROXY_PORT) options.set_preference("network.proxy.ssl", PROXY_HOST) options.set_preference("network.proxy.ssl_port", PROXY_PORT) options.set_preference("network.http.use-cache", False) return options def read_optional(driver, xpath): try: return driver.find_element(By.XPATH, xpath).text.strip() except Exception: return None def scrape_walmart_product(url, service, options, max_retries=3, retry_delay=5): for attempt in range(1, max_retries + 1): driver = webdriver.Firefox(service=service, options=options) try: driver.get(url) WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.XPATH, TITLE_XPATH)) ) return { "url": url, "title": driver.find_element(By.XPATH, TITLE_XPATH).text.strip(), "price": read_optional(driver, PRICE_XPATH), } except TimeoutException: print(f"Timeout on attempt {attempt} for {url}") except Exception as error: print(f"Error on attempt {attempt}: {error}") finally: driver.quit() if attempt < max_retries: print(f"Retrying in {retry_delay}s...") sleep(retry_delay) return None def main(): driver_path = os.path.join(os.getcwd(), "drivers", "geckodriver") service = Service(driver_path) options = build_options() product_url = "https://www.walmart.com/ip/Ozark-Trail-Basic-Mesh-Chair-Blue-Adult/577309300" result = scrape_walmart_product(product_url, service, options) if result: with open("walmart_product.json", "w") as f: json.dump(result, f, indent=2) print(json.dumps(result, indent=2)) else: print("Could not scrape the product after all retries.") if __name__ == "__main__": main()
Wie die Ausgabe aussieht
Führen Sie es mit python walmart_scraper.py aus und Sie erhalten saubere strukturierte Daten, die in walmart_product.json geschrieben und auf der Konsole ausgegeben werden.
{ "url": "https://www.walmart.com/ip/Ozark-Trail-Basic-Mesh-Chair-Blue-Adult/577309300", "title": "Ozark Trail Basic Mesh Chair, Blue, Adult", "price": "$12.98" }
Fügen Sie die Bewertungs- und Rezensionsanzahl-Selektoren dem Ergebnis-Dict auf dieselbe Weise hinzu, sobald Sie sie auf der Live-Seite inspiziert haben, und jeder Lauf erfasst den vollständigen öffentlichen Feldsatz für das Produkt. Um dies in einen Preisüberwachungsauftrag zu verwandeln, schleifen Sie eine Liste von Produkt-URLs durch scrape_walmart_product und fügen Sie jedes Ergebnis einer Liste hinzu, bevor Sie die Datei schreiben.
Bei Volumen nicht blockiert bleiben
Der Smart AI Proxy übernimmt die IP-Rotation für Sie, aber einige Gewohnheiten halten einen größeren Lauf gesund und gelten für jedes schwierige kommerzielle Ziel.
- Anfragen zeitlich verteilen. Walmart in einer engen Schleife zu hämmern ist der schnellste Weg, gedrosselt zu werden. Verteilen Sie Anfragen und variieren Sie die Produkte, die Sie abrufen, anstatt dieselbe URL zu wiederholen.
- Auf Rotation setzen. Der Smart AI Proxy verteilt Ihren Traffic über viele echte Benutzer-IPs, sodass keine einzelne Adresse ein Ratenlimit auslöst. Das ist der Teil, den Sie sonst selbst aufbauen und pflegen müssten.
- Statuscodes lesen. Ein Lauf, der beginnt, Herausforderungen oder leere Seiten zurückzugeben, signalisiert, dass die aktuelle Rate zu hoch ist. Behandeln Sie Proxy-Statuscodes als Signal, nicht als Lärm, und treten Sie zurück, wenn Sie sie sehen.
Das umfassendere Playbook finden Sie unter wie Sie Webseiten scrapen ohne blockiert zu werden. Wenn Sie lieber den Headless-Browser ganz überspringen und eine API geparste Produktdaten zurückgeben lassen möchten, vergleichen Sie dieses Projekt mit der Crawling API, die für unterstützte Seiten vorparstes JSON zurückgibt, oder der Crawling API für gerendertes HTML ohne selbst Selenium zu betreiben. Dasselbe Selenium-Muster funktioniert auch bei anderen Händlern; Amazon nach ASIN scrapen behandelt einen eng verwandten Auftrag.
Ist es legal, Walmart zu scrapen?
Das Scrapen eines großen kommerziellen Händlers bewegt sich in einer rechtlichen Grauzone, und die Antwort auf "ist es erlaubt" hängt von Walmarts Nutzungsbedingungen, Ihrer Rechtsprechung und dem Zweck ab. Walmarts Bedingungen schränken automatisierten Zugriff ein, sodass Scraping unabhängig von der Sorgfalt Ihrer Tools gegen diese Bedingungen verstoßen kann. Keiner der hier vorgestellte Code ändert das; er lässt lediglich den technischen Teil funktionieren.
Einige Regeln, an die es sich zu halten lohnt. Sammeln Sie nur öffentliche Daten: den Titel, Preis, Bewertung und die Rezensionsanzahl, die jeder ohne Konto sehen kann. Respektieren Sie Walmarts robots.txt und seine erklärten Ratenerwartungen und halten Sie Ihr Anfragevolumen niedrig genug, dass Sie niemandes Server belasten. Wenn Sie die Daten kommerziell weiterverwenden möchten, holen Sie eine Genehmigung oder eine offizielle Datenvereinbarung ein, anstatt davon auszugehen, dass Schweigen Zustimmung bedeutet. Und sammeln Sie niemals personenbezogene Daten, einschließlich allem, was mit einzelnen Kundenkonten oder auf echte Personen zurückführbaren Rezensionen zusammenhängt.
Dieser Leitfaden beschränkt sich bewusst auf öffentliche Produktdaten, weil das die Grenze ist, die die Arbeit vertretbar hält. Er behandelt weder Inhalte hinter einem Login, Konto- oder Bestelldaten, Zahlungs- oder Checkout-Aktionen noch Versuche, Authentifizierung zu umgehen. Wenn Ihr Projekt mehr als öffentliche Produktfelder erfordert, ist eine offizielle API oder eine Datenvereinbarung mit Walmart der richtige Schritt, nicht ein cleverer Scraper.
Wichtigste Erkenntnisse
- Den Auftrag aufteilen. Selenium rendert und liest die Seite; der Smart AI Proxy verwaltet das Netzwerk. Jedes Werkzeug erledigt einen Teil, und diese Trennung macht den Scraper zuverlässig.
-
Firefox durch den Proxy leiten. Setzen Sie
network.proxy.typeauf manuell und verweisen Sie HTTP und SSL aufsmartproxy.crawlbase.com:8012mit Ihrem Token, dann verifizieren Sie gegenhttpbin.org/ip, bevor Sie scrapen. -
Warten, dann lesen. Verwenden Sie
WebDriverWaitauf den Titel vor der Extraktion und lesen Sie optionale Felder durch einen Helfer, derNonezurückgibt, wenn ein Element fehlt. - Erwarten Sie, dass Selektoren driften. Walmart ändert sein Markup ohne Vorankündigung, also prüfen und aktualisieren Sie XPaths, wenn die Extraktion leere Strings zurückgibt.
- Bei öffentlichen Daten bleiben. Respektieren Sie Walmarts Nutzungsbedingungen und robots.txt; keine Konten, keine personenbezogenen Daten, keine Checkout- oder Auth-Bypass-Aktionen.
Häufig gestellte Fragen
Warum gibt eine einfache Anfrage keine Daten von einer Walmart-Produktseite zurück?
Zwei Dinge arbeiten gegen eine bloße HTTP-Anfrage. Erstens rendert Walmart einen Großteil seiner Produktdetails clientseitig, sodass das anfängliche HTML eine Hülle ist, die sich erst füllt, nachdem das JavaScript der Seite in einem echten Browser ausgeführt wurde. Zweitens kennzeichnet Walmart automatisierten Traffic schnell und fordert oder blockiert ihn. Selenium löst das Rendering, indem es ein echtes Firefox steuert, und das Routing dieses Browsers durch den Smart AI Proxy gibt Ihnen eine IP, die die Site als echten Besucher liest.
Benötige ich einen Proxy, um Walmart mit Selenium zu scrapen?
Für alles über eine einzelne Testanfrage hinaus, ja. Selenium rendert die Seite, sendet aber standardmäßig Anfragen von Ihrer eigenen IP, und Walmart drosselt oder blockiert wiederholten automatisierten Traffic schnell. Firefox durch den Smart AI Proxy zu routen rotiert Ihre Anfragen serverseitig über Residential-IPs, sodass keine einzelne Adresse ein Ratenlimit auslöst. Das ist der Unterschied zwischen einem Demo, das einmal funktioniert, und einem Scraper, der weiter funktioniert.
Wie verweise ich Firefox in Selenium auf den Smart AI Proxy?
Setzen Sie die Firefox-Präferenz network.proxy.type auf 1 für manuelle Konfiguration, dann setzen Sie network.proxy.http und network.proxy.ssl auf http://[email protected] mit den entsprechenden _port-Präferenzen auf 8012. Übergeben Sie diese Optionen, wenn Sie den Treiber erstellen, und jede Anfrage, die Firefox stellt, geht über den Proxy. Verifizieren Sie es, indem Sie httpbin.org/ip laden und prüfen, dass die zurückgegebene Adresse nicht Ihre eigene ist.
Meine XPath-Selektoren geben leere Strings zurück. Was hat sich geändert?
Höchstwahrscheinlich Walmarts Markup. Seine Attributnamen und Klassenstruktur ändern sich ohne Vorankündigung, sodass Selektoren, die letzten Monat funktioniert haben, brechen können. Prüfen Sie eine Live-Produktseite in den Dev Tools Ihres Browsers, finden Sie das aktuelle Attribut oder Element für das gewünschte Feld und aktualisieren Sie den XPath. Periodische Selektorpflege ist normal für jeden Produktions-Scraper, kein Zeichen dafür, dass der Ansatz kaputt ist.
Soll ich Selenium oder eine API verwenden, um Walmart zu scrapen?
Verwenden Sie Selenium, wenn Sie volle Kontrolle über einen echten Browser möchten, mit der Seite interagieren müssen oder lernen, wie Rendering und Proxys zusammenpassen. Wenn Sie lieber den Headless-Browser überspringen, gibt die Scraper API vorparstes Produkt-JSON für unterstützte Seiten zurück, und die Crawling API gibt gerendertes HTML in einem einzigen Aufruf zurück, ohne selbst eine Browser-Flotte zu betreiben. Für einmalige oder ungewöhnliche Layouts ist das Selenium-Projekt in diesem Leitfaden die flexible Option.
Ist es legal, Walmart zu scrapen?
Es hängt von Walmarts Nutzungsbedingungen, Ihrer Rechtsprechung und Ihrem Zweck ab, und deren Bedingungen schränken automatisierten Zugriff ein. Bleiben Sie strikt bei öffentlichen Produktdaten, respektieren Sie robots.txt und Ratenerwartungen und berühren Sie niemals Konten, personenbezogene Daten oder Checkout- und Authentifizierungsflows. Für kommerzielle Weiterverwendung holen Sie eine Genehmigung oder eine offizielle Datenvereinbarung ein, anstatt sich auf einen Scraper zu verlassen.
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.
