Einen Preis von einer Amazon-Produktseite zu ziehen klingt trivial, bis man es in großem Maßstab automatisieren will. Die Seite rendert clientseitig, das Markup wechselt zwischen Layouts, und dasselbe Produkt kann gleichzeitig einen Aktionspreis, einen Listenpreis, einen Gutschein und einen Subscribe-and-Save-Preis anzeigen. Die alte Antwort war ein Haufen spröder CSS-Selektoren oder XPath, der brach, sobald Amazon eine Änderung auslieferte. KI verändert die Kalkulation: Anstatt zu beschreiben, wo der Preis im DOM sitzt, übergeben Sie einem Modell den Seiteninhalt und sagen ihm auf Englisch, was Sie wollen.
Diese Anleitung zeigt Ihnen, wie Sie Preise von Amazon mit KI scrapen können, und zwar auf zuverlässige Weise. Verwenden Sie die Crawling API, um die öffentliche Produktseite abzurufen und in sauberes Markdown zu rendern, und übergeben Sie diesen Inhalt dann an ein großes Sprachmodell, das den Preis und verwandte Felder als strukturiertes JSON zurückgibt. Die Aufteilung ist der eigentliche Punkt: Crawlbase übernimmt das Abrufen und Rendern hinter einem echten Browser und einer vertrauenswürdigen IP, das Modell übernimmt das Lesen und Strukturieren. Jedes Tool erledigt den Teil, für den es tatsächlich gut geeignet ist.
Warum KI mit einer Abrugeschicht kombinieren
Ein Sprachmodell ist gut darin, unordentliche Inhalte zu lesen und strukturierte Daten zurückzugeben, wenn Sie darum bitten. Was es nicht kann, ist eine Webseite abzurufen. Es hat keinen HTTP-Client, keinen Browser, keinen Proxy-Pool und keinen Weg an den Anti-Bot-Abwehrmechanismen vorbei, die eine Website wie Amazon bewachen. Geben Sie ihm eine URL, kann es sie nicht öffnen; geben Sie ihm rohen HTML-Code, den Sie selbst gescrapt haben, extrahiert es aus dem, was Sie tatsächlich abgerufen haben, was bei Amazon normalerweise eine fast leere Shell oder eine CAPTCHA-Seite ist.
Diese Lücke füllt die Abrugeschicht. Amazon rendert Preise und Verfügbarkeit im Browser, und es fordert automatisierten Datenverkehr schnell heraus, sodass ein einfaches requests.get typischerweise eine 200 ohne die gesuchten Daten zurückgibt. Sie brauchen einen Browser, der das JavaScript der Seite ausführt, und eine IP, die die Website als echten Besucher liest. Sie können das selbst mit einem Headless-Browser plus rotierenden residentiellen Proxys aufbauen, aber das Gesundhalten dieses Stacks ist der größte Teil der Arbeit. Die Crawling API faltet beides in einen Aufruf: Senden Sie eine URL mit einem JavaScript-Token, sie rendert die Seite und gibt fertigen Inhalt zurück, bereit für das Modell.
Halten Sie die Grenze klar. Crawlbase ruft ab und rendert die Amazon-Seite in sauberes Markdown. Das Modell extrahiert den Preis und verwandte Felder aus diesem Inhalt. Das Modell berührt das Netzwerk in diesem Design nie, und Crawlbase versucht nie, die Daten zu verstehen. Das Verwischen dieser beiden Aufgaben ist der häufigste Grund, warum sich diese Pipelines brüchig anfühlen.
Ist es legal, Amazon-Preise zu scrapen?
Das hängt von den Nutzungsbedingungen von Amazon, Ihrer Rechtsordnung und dem ab, was Sie mit den Daten tun. Die Bedingungen von Amazon beschränken den automatisierten Zugriff, daher kann das Scrapen gegen diese Bedingungen verstoßen, unabhängig davon, wie sorgfältig Ihr Tooling ist. Keiner der hier gezeigten Codes ändert das; er macht nur den technischen Teil funktionstüchtig. Behandeln Sie die rechtliche Frage als echte, nicht als Formalität.
Einige Grundsätze, an die Sie sich halten sollten. Sammeln Sie nur öffentliche Daten: die Preise, Titel, Bewertungen und Verfügbarkeiten, die jeder auf einer Produktseite ohne Anmeldung sehen kann. Respektieren Sie die robots.txt von Amazon und die angegebenen Ratenerwartungen und halten Sie Ihr Anfragevolumen niedrig genug, dass Sie niemandes Server belasten. Wenn Sie die Daten kommerziell wiederverwenden möchten, holen Sie sich die Erlaubnis oder eine offizielle Datenvereinbarung, anstatt Schweigen als Zustimmung zu interpretieren. Und sammeln Sie niemals personenbezogene Daten, einschließlich alles, was mit einzelnen Kundenkonten oder Rezensionen verbunden ist, die identifizierbaren Personen zuzuordnen sind.
Diese Anleitung ist bewusst auf öffentliche Produktdaten beschränkt, weil das die Grenze ist, die die Arbeit vertretbar macht. Sie deckt nichts hinter einem Login, Konto- oder Bestelldaten, Zahlungsabläufe oder Versuche ab, die Authentifizierung zu umgehen. Wenn Ihr Projekt mehr als öffentliche Produktseiten benötigt, ist ein offizieller API-Zugriff oder eine Datenvereinbarung mit Amazon der richtige Schritt und kein ausgefeilterer Scraper.
Was Sie bauen werden
Ein kleines, lauffähiges Python-Skript, das eine Amazon-Produkt-URL nimmt, die gerenderte Seite über die Crawling API als sauberes Markdown abruft, dieses Markdown mit einem Extraktionsprompt an ein Sprachmodell sendet und das strukturierte Ergebnis in eine JSON-Datei schreibt. Wir richten es auf eine echte Produktseite, aber dasselbe Skript funktioniert auf jeder öffentlichen Amazon-URL, die Sie austauschen.
Umgebung einrichten
Sie benötigen Python 3.8 oder höher. Bestätigen Sie Ihre Version, erstellen Sie eine virtuelle Umgebung, damit Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die Bibliotheken.
python --version python -m venv amazon_env source amazon_env/bin/activate pip install openai crawlbase python-dotenv
Aktivieren Sie unter Windows die Umgebung mit amazon_env\Scripts\activate anstelle der source-Zeile. Drei Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Client für die Crawling API, openai ist der Client für das Sprachmodell, und python-dotenv lädt Ihre Schlüssel aus einer lokalen Datei, damit sie niemals fest im Skript kodiert werden.
Sie benötigen zwei Anmeldedaten. Holen Sie sich einen API-Schlüssel für Ihren Modellanbieter aus dessen Dashboard und holen Sie sich ein Crawlbase JavaScript (JS)-Token aus Ihrem Crawlbase-Dashboard nach der Registrierung. Speichern Sie beide in einer .env-Datei in Ihrem Projektordner.
OPENAI_API_KEY=your_model_api_key_here CRAWLBASE_JS_TOKEN=your_crawlbase_js_token_here
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. Amazon lädt seine Preise clientseitig, daher ist das JS-Token hier die richtige Wahl. Die Verwendung des normalen Tokens auf einer clientseitig gerenderten Seite gibt dieselbe leere Shell zurück, die auch ein einfacher Abruf liefern würde, und das Modell kann keinen Preis extrahieren, der nie vorhanden war.
Schritt 1: Die gerenderte Amazon-Seite abrufen
Die Crawling API kann die Seite bereits in Markdown umgewandelt zurückgeben, was genau das ist, was Sie wollen, bevor Sie es an ein Sprachmodell senden. Markdown entfernt den Navigations-, Skript- und Styling-Lärm und lässt den lesbaren Inhalt übrig. Das reduziert die Token-Anzahl, die Sie an das Modell senden, was den Aufruf günstiger und die Extraktion genauer macht. Übergeben Sie format: 'markdown' und die API gibt Ihnen sauberen Text anstelle von rohem HTML.
import os from dotenv import load_dotenv from crawlbase import CrawlingAPI load_dotenv() api = CrawlingAPI({"token": os.environ["CRAWLBASE_JS_TOKEN"]}) url = "https://www.amazon.com/dp/B0CHX1W1XY" def fetch_markdown(target_url): options = {"format": "markdown", "ajax_wait": "true", "page_wait": 3000} response = api.get(target_url, options) return response["body"].decode("utf-8") page_markdown = fetch_markdown(url) print(page_markdown[:500])
Die beiden Warteoptionen sind bei einem clientseitig gerenderten Ziel wie Amazon wichtig. ajax_wait weist die API an, auf das Fertigladen asynchroner Inhalte zu warten, und page_wait hält eine festgelegte Anzahl von Millisekunden nach dem Laden an, damit spät rendernde Preiselemente erscheinen, bevor die Seite erfasst wird. Drei Sekunden sind ein vernünftiger Ausgangspunkt; erhöhen Sie den Wert, wenn der Preis fehlt. Führen Sie dies aus, und Sie sollten echtes Produkt-Markup in der Ausgabe sehen, nicht eine leere Shell, was bestätigt, dass das Rendering funktioniert, bevor Sie eine einzige Zeile Extraktionslogik schreiben.
Ein KI-Modell liest Seiten, es ruft sie nicht ab. Die Crawling API schließt diese Lücke in einem Aufruf: Übergeben Sie ein JS-Token, sie rendert die Amazon-Seite in einem echten Browser, rotiert serverseitig durch residentielle IPs und gibt sauberes HTML oder LLM-fähiges Markdown zurück, sodass Sie selbst keine Headless-Flotte und keinen Proxy-Pool betreiben müssen. Richten Sie es zunächst auf eine öffentliche Produktseite im kostenlosen Tarif.
Schritt 2: Den Inhalt an das Modell senden und JSON anfordern
Mit sauberem Markdown beschreiben Sie die gewünschten Felder in einem Prompt und lassen das Modell die Extraktion durchführen. Der Trick für eine zuverlässige Pipeline ist das Erzwingen von JSON-Ausgabe. Der OpenAI-Client unterstützt ein JSON-Antwortformat, also setzen Sie es, und das Modell gibt parsbares JSON anstelle von Prosa in Code-Fences zurück. Diese eine Einstellung beseitigt den größten Teil der Brüchigkeit, über die sich Leute bei LLM-Extraktion beschweren.
from openai import OpenAI client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) def extract_fields(content): prompt = f"""You are a data extraction tool. From the Amazon product page content below, extract the product title, current price, list price, currency, rating, review count, and availability. Return only JSON with keys: title, price, list_price, currency, rating, reviews, availability. Use null for any field not present. CONTENT: {content} """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}], response_format={"type": "json_object"}, ) return response.choices[0].message.content raw_json = extract_fields(page_markdown) print(raw_json)
Einige Dinge lassen diesen Prompt funktionieren. Er gibt die Rolle an ("Datenextraktionstool"), damit das Modell knapp bleibt, benennt die genauen Schlüssel, die Sie wollen, damit das Schema über Läufe hinweg stabil ist, und weist das Modell an, null für fehlende Felder zu verwenden, damit ein Produkt ohne Listenpreis die Ausgabe nicht entgleist. Die Übergabe von Markdown anstelle von rohem HTML bedeutet, dass das Modell seine Aufmerksamkeit auf Inhalte konzentriert, nicht auf Boilerplate. Wenn Sie ein reichhaltigeres Schema benötigen, listen Sie weitere Schlüssel auf und beschreiben Sie mehrdeutige; das Modell verarbeitet verschachtelte Objekte und Arrays ohne zusätzlichen Aufwand.
Schritt 3: Das strukturierte Ergebnis parsen und speichern
Da Sie ein JSON-Antwortformat angefordert haben, ist der Antworttext bereits gültiges JSON. Parsen Sie es in ein Python-Dict und schreiben Sie es auf die Festplatte. Wickeln Sie das Parsen in ein try/except, damit eine seltene fehlerhafte Antwort den rohen Text protokolliert, anstatt den Lauf zum Absturz zu bringen.
import json def save_json(raw, path="amazon_price.json"): try: data = json.loads(raw) except json.JSONDecodeError: print("Model did not return valid JSON:") print(raw) return with open(path, "w") as f: json.dump(data, f, indent=2) print(f"Saved {path}") save_json(raw_json)
Das vollständige Skript
Hier ist alles in einer einzigen lauffähigen Datei zusammengefasst. Tragen Sie Ihre zwei Anmeldedaten in .env ein, ändern Sie die URL auf das Produkt, das Sie interessiert, und passen Sie die Prompt-Schlüssel für die Felder an, die Sie benötigen.
import os import json from dotenv import load_dotenv from crawlbase import CrawlingAPI from openai import OpenAI load_dotenv() api = CrawlingAPI({"token": os.environ["CRAWLBASE_JS_TOKEN"]}) client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) url = "https://www.amazon.com/dp/B0CHX1W1XY" def fetch_markdown(target_url): options = {"format": "markdown", "ajax_wait": "true", "page_wait": 3000} response = api.get(target_url, options) return response["body"].decode("utf-8") def extract_fields(content): prompt = f"""You are a data extraction tool. From the Amazon product page content below, extract the product title, current price, list price, currency, rating, review count, and availability. Return only JSON with keys: title, price, list_price, currency, rating, reviews, availability. Use null for any field not present. CONTENT: {content} """ response = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": prompt}], response_format={"type": "json_object"}, ) return response.choices[0].message.content def main(): markdown = fetch_markdown(url) raw = extract_fields(markdown) try: data = json.loads(raw) except json.JSONDecodeError: print("Model did not return valid JSON:", raw) return with open("amazon_price.json", "w") as f: json.dump(data, f, indent=2) print(json.dumps(data, indent=2)) if __name__ == "__main__": main()
Wie die Ausgabe aussieht
Führen Sie es mit python amazon_scraper.py aus, und Sie erhalten saubere strukturierte Daten, die in amazon_price.json geschrieben und in der Konsole ausgegeben werden.
{ "title": "Echo Dot (5th Gen) Smart speaker with Alexa", "price": "$34.99", "list_price": "$49.99", "currency": "USD", "rating": "4.7", "reviews": "128,540", "availability": "In Stock" }
Beachten Sie, was Sie nicht geschrieben haben: keine CSS-Selektoren, kein XPath, keine Parsing-Logik pro Feld, um den Aktionspreis vom Listenpreis zu entwirren. Sie haben die Felder beschrieben, und das Modell hat sie gefunden. Richten Sie dasselbe Skript auf ein anderes Produkt oder sogar auf eine Suchergebnisseite, und es passt sich ohne Codeänderungen an, was der eigentliche Vorteil des KI-Datenextraktions-Ansatzes gegenüber manuell abgestimmten Selektoren ist. Für dasselbe Muster mit einem anderen Modell lesen Sie wie man Gemini AI für Web-Scraping einsetzt.
Auf viele Produkte skalieren
Eine Seite ist eine Demo; ein echter Preisüberwachungsjob läuft über eine Liste von Produkten. Die Form bleibt gleich: Durchlaufen Sie die URLs, holen Sie jede über die Crawling API, extrahieren Sie mit dem Modell und sammeln Sie die Zeilen. Zwei Dinge sollten Sie beim Skalieren im Hinterkopf behalten. Das Modell berechnet pro Token, daher senkt das Senden von Markdown anstelle von vollständigem HTML die Kosten bei jedem Aufruf, und die Crawling API hat ihren eigenen Durchsatz, sodass Sie weder Proxys noch Browser-Instanzen selbst verwalten müssen.
urls = [ "https://www.amazon.com/dp/B0CHX1W1XY", "https://www.amazon.com/dp/B09B8V1LZ3", ] results = [] for u in urls: markdown = fetch_markdown(u) raw = extract_fields(markdown) try: row = json.loads(raw) row["url"] = u results.append(row) except json.JSONDecodeError: print(f"Skipped {u}: invalid JSON") with open("prices.json", "w") as f: json.dump(results, f, indent=2)
Wenn Sie speziell und wiederholt Amazon scrapen, lohnt es sich, dies mit der Crawling API zu vergleichen, die vorgeparste JSON für unterstützte Sites einschließlich Amazon ohne LLM in der Schleife zurückgibt. Sie ist schneller und günstiger für diesen gut ausgetretenen Fall. Der KI-Ansatz in dieser Anleitung ist die flexible Alternative für ungewöhnliche Layouts, einmalige Produkte oder Felder, die kein dedizierter Parser bereitstellt. Warum Markdown die richtige Eingabeform für ein Modell ist, erfahren Sie unter LLM-fähiges Markdown für Web-Scraping.
Grenzen, die Sie vor dem Einsatz kennen sollten
Die KI-plus-Crawlbase-Pipeline ist flexibel, aber sie ist nicht der richtige Hammer für jeden Nagel. Beachten Sie diese Punkte.
Token-Kosten summieren sich. Das Modell berechnet pro gesendeten und empfangenen Token. Das Senden von vollständigem HTML anstelle von Markdown kann Ihre Rechnung ohne Nutzen vervielfachen, also kürzen Sie die Eingabe immer. Extrahieren Sie für sehr große Seiten nur den relevanten Abschnitt vor dem Modellaufruf.
Es ist langsamer als regelbasiertes Parsen. Ein LLM-Round-Trip dauert länger als ein BeautifulSoup- oder Cheerio-Selektor-Durchlauf. Für hochfrequente, latenzarme Jobs wie sekündliche Preisüberwachung gewinnt ein dedizierter Parser oder die Scraper API. Der KI-Ansatz glänzt, wenn Layouts variieren oder sich häufig ändern.
Modelle können falsch liegen. Amazon-Seiten sind dicht und repetitiv, sodass ein Modell gelegentlich den Preis eines verwandten Produkts greifen oder den Aktionspreis mit dem Listenpreis verwechseln kann. Das Erzwingen von JSON-Ausgabe und das Benennen exakter Schlüssel reduziert das erheblich, aber für geschäftskritische Zwecke validieren Sie das geparste Dict gegen ein erwartetes Schema, bevor Sie ihm vertrauen.
Um bei Volumen nicht blockiert zu bleiben, übernimmt die Crawling API IP-Rotation und Rendering für Sie. Wenn Sie Ihren eigenen Datenverkehr lieber durch einen rotierenden Pool leiten möchten, bietet der Smart AI Proxy dieselbe residentielle IP-Rotation als Drop-in-Proxy-Endpunkt. Das breite Playbook finden Sie unter wie man Websites scrapt, ohne blockiert zu werden, und den weiteren E-Commerce-Kontext unter E-Commerce-Web-Scraping.
Wichtigste Erkenntnisse
- Teilen Sie die Aufgabe auf. Crawlbase ruft die Amazon-Seite ab und rendert sie; das Modell extrahiert den Preis und verwandte Felder. Kein Tool erledigt die Arbeit des anderen, und diese Trennung ist es, die die Pipeline zuverlässig macht.
-
Verwenden Sie das JS-Token und das Markdown-Format. Das JS-Token rendert die clientseitigen Preise von Amazon;
format: 'markdown'gibt saubere, tokenarme Inhalte zurück, die ideale Eingabe für ein Modell sind. - Erzwingen Sie JSON-Ausgabe. Setzen Sie das Antwortformat auf ein JSON-Objekt und benennen Sie Ihre genauen Schlüssel, damit das Ergebnis bei jedem Lauf parsbar ist.
- Keine Selektoren erforderlich. Sie beschreiben die Felder auf Englisch, sodass sich dasselbe Skript über Produktlayouts hinweg anpasst, ohne Extraktionscode neu zu schreiben.
- Bleiben Sie bei öffentlichen Daten. Respektieren Sie die Nutzungsbedingungen und robots.txt von Amazon; keine Konten, keine Bestelldaten, kein Auth-Bypass, und greifen Sie auf die Scraper API zurück, wenn Geschwindigkeit wichtig ist.
Häufig gestellte Fragen
Kann ein KI-Modell Amazon-Preise alleine scrapen?
Nicht den Abrufteil. Ein Sprachmodell liest und strukturiert Inhalte, die Sie ihm geben, aber es hat keinen HTTP-Client, keinen Browser und keinen Proxy-Pool, sodass es eine Amazon-URL nicht öffnen oder an Anti-Bot-Abwehrmechanismen vorbeikommen kann. Sie kombinieren es mit einer Abrugeschicht wie der Crawling API, die die Seite rendert und sauberes Markdown zurückgibt; das Modell extrahiert dann den Preis und andere Felder aus diesem Inhalt.
Warum die Amazon-Seite in Markdown konvertieren, bevor sie an das Modell gesendet wird?
Markdown entfernt Navigation, Skripte und Styling-Rauschen und lässt den lesbaren Inhalt übrig. Das senkt die Token-Anzahl, die Sie an das Modell senden, was die Kosten reduziert und die Genauigkeit verbessert, weil das Modell seine Aufmerksamkeit auf die eigentlichen Produktdetails statt auf Boilerplate konzentriert. Die Crawling API kann Markdown direkt mit format: 'markdown' zurückgeben, sodass Sie keinen separaten Konvertierungsschritt benötigen.
Brauche ich das normale Token oder das JS-Token für Amazon?
Verwenden Sie das JS-Token. Amazon rendert seine Preise clientseitig, sodass das normale Token eine leere Shell zurückgibt und das Modell nichts zu extrahieren hat. Das JS-Token rendert die Seite zuerst in einem echten Browser, sodass der Preis und die Verfügbarkeit vorhanden sind, wenn der Inhalt das Modell erreicht.
Sollte ich stattdessen die Scraper API für Amazon verwenden?
Oft ja. Die Crawling API gibt vorgeparste JSON für Amazon ohne LLM in der Schleife zurück, was für die routinemäßige Preisüberwachung schneller und günstiger ist. Der KI-Ansatz in dieser Anleitung ist die flexible Alternative für ungewöhnliche Layouts, einmalige Produkte oder Felder, die der Parser nicht bereitstellt. Viele Teams verwenden die Scraper API für das Volumen und die KI-Pipeline für die Sonderfälle.
Ist es legal, Preise von Amazon zu scrapen?
Das hängt von den Nutzungsbedingungen von Amazon, Ihrer Rechtsordnung und Ihrem Zweck ab, und deren Bedingungen beschränken den automatisierten Zugriff. Beschränken Sie sich strikt auf öffentliche Produktdaten wie Preise, Titel und Bewertungen, respektieren Sie robots.txt und Ratenerwartungen, und berühren Sie niemals Konten, Bestelldaten, Zahlungsabläufe oder Authentifizierung. Für die kommerzielle Wiederverwendung holen Sie sich die Erlaubnis oder eine offizielle Datenvereinbarung, anstatt sich auf einen Scraper zu verlassen.
Wie vermeide ich Blockierungen beim Scrapen von Amazon-Preisen?
Halten Sie Ihre Pro-IP-Anfragerate niedrig, variieren Sie die Produkte, die Sie abrufen, anstatt eine URL zu bombardieren, und leiten Sie durch rotierende residentielle 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 ziehen Sie sich zurück, wenn Sie beginnen, 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.
