Preise auf einem Marktplatz ändern sich ständig, und ein einzelner Seitenaufruf sagt Ihnen nur, was etwas gerade jetzt kostet. Preisintelligenz ist die Disziplin, dieses bewegliche Ziel in strukturierte Daten zu verwandeln, die Sie verfolgen können: Konkurrenz- und Marktplatzpreise von öffentlichen Produktseiten abzurufen, sie in saubere Zeilen zu normalisieren, sie über die Zeit zu speichern und den Trend zu lesen. Dieser Leitfaden zeigt Ihnen, wie man Web Scraping für Preisintelligenz von Ende zu Ende verwendet, mit ausführbarem Python, das Sie heute auf echte Listings zeigen können.

Um das ehrlich zu halten, bleibt der gesamte Walkthrough bei öffentlichen Produktdaten: Namen, Preise, Währungen und Listing-URLs, die jeder ohne Anmeldung sehen kann. Er berührt nicht Benutzerkonten, anmeldungsgeschützte Seiten, Checkout-Aktionen oder personenbezogene Daten. Es gibt eine kurze ToS-Notiz gegen Ende, die kein Boilerplate ist, also lesen Sie sie, bevor Sie das im großen Maßstab ausführen.

Was Preisintelligenz tatsächlich braucht

Es ist leicht, das als "einen Preis scrapen" zu betrachten. In der Praxis hat ein nützliches Preisintelligenz-System vier Aufgaben, und das Scraping ist nur die erste.

  • Sammeln von Preisen von den öffentlichen Seiten, die Sie interessieren, zuverlässig genug, um nach Zeitplan zu laufen.
  • Normalisieren der unordentlichen Rohwerte (Währungssymbole, Tausendertrennzeichen, "ab"-Preise) in saubere Zahlen.
  • Speichern jeder Beobachtung mit einem Zeitstempel, sodass Sie Geschichte haben, nicht nur eine Momentaufnahme.
  • Analysieren der Geschichte: über Quellen hinweg vergleichen, Durchschnitte berechnen und Bewegungen markieren, auf die es sich zu reagieren lohnt.

Das ist dieselbe Problemform wie jede E-Commerce Web Scraping-Aufgabe. Der Unterschied bei Preisintelligenz ist, dass der Wert in der Zeitreihe liegt, sodass die Sammlung wiederholbar sein muss und die Daten irgendwo landen müssen, wo Sie sie später abfragen können.

Warum Sammlung der schwierige Teil ist

Wenn Sie einen nackten HTTP-Client auf eine große Marktplatz-Suchseite zeigen, erhalten Sie in der Regel eines von zwei enttäuschenden Ergebnissen: eine 200-Antwort mit fast keinen Produktdaten im Body, oder eine Blockierung. Zwei Dinge arbeiten gegen Sie. Viele Marktplätze rendern ihre Listings im Browser mit JavaScript, sodass das anfängliche HTML eine Hülle ist, die sich erst nach dem Laufen von Skripten füllt. Und sie markieren automatisierten Traffic schnell: Datacenter-IPs und Anfragemuster, die nicht wie ein echter Browser aussehen, werden angefochten, bevor sie den gerenderten Inhalt jemals sehen.

Zuverlässiges Sammeln braucht also zwei Dinge in einer Anfrage: einen Renderer für clientseitige Seiten und eine IP, die die Plattform als echten Besucher liest. Sie können das selbst mit einem Headless-Browser plus einem Pool von Residential Proxies zusammenbauen, aber diese Flotte gesund zu halten ist der Großteil der Arbeit. Die Crawling API faltet beides in einen einzigen Aufruf. Für die großen Marktplätze bringt sie auch vorgefertigte Parser mit, sodass Sie das Schreiben von Selektoren ganz überspringen können.

Two ways to collect

Die Crawling API gibt das rohe gerenderte HTML für jede URL zurück, das Sie dann selbst parsen. Die Crawling API und die integrierten Scraper der Crawling API gehen einen Schritt weiter: Für unterstützte Sites wie Amazon und eBay geben sie sauberes JSON zurück, sodass kein HTML-Parsing zu pflegen ist. Dieser Leitfaden verwendet die integrierten Scraper für die Sammlung und fällt auf rohes HTML zurück, wenn ein Ziel nicht unterstützt wird.

Das Projekt einrichten

Sie brauchen Python 3 installiert. Erstellen Sie ein Verzeichnis, dann installieren Sie die vier Bibliotheken, die dieser Walkthrough verwendet: requests für HTTP, price_parser zum Normalisieren von Währungszeichenketten und pandas für den Analyseschritt.

bash
mkdir price-intelligence && cd price-intelligence
python -m venv .venv && source .venv/bin/activate
pip install requests price_parser pandas

Sie brauchen auch ein Crawlbase-Konto und ein API-Token, das Sie nach der Registrierung vom Dashboard erhalten. Neue Konten kommen mit kostenlosen Anfragen, sodass Sie alles unten testen können, bevor Sie sich zu etwas verpflichten. Tragen Sie das Token überall dort ein, wo Sie YOUR_CRAWLBASE_TOKEN sehen.

Preise von einem Marktplatz sammeln

Beginnen Sie mit den Suchseiten, die Sie verfolgen möchten. Für ein Produkt wie ein Telefon geben Ihnen eine Amazon- und eine eBay-Suche nach derselben Abfrage zwei konkurrierende Quellen zum Vergleich. Da beide von den integrierten Scrapern der Crawling API unterstützt werden, übergeben Sie einen scraper-Parameter und erhalten strukturiertes Produkt-JSON statt HTML zurück.

python
import requests
import urllib.parse

API_TOKEN = "YOUR_CRAWLBASE_TOKEN"
API_ENDPOINT = "https://api.crawlbase.com/"

def collect(url, scraper, country="US"):
    params = {
        "token": API_TOKEN,
        "url": url,
        "scraper": scraper,
        "country": country,
    }
    resp = requests.get(API_ENDPOINT, params=params, timeout=90)
    resp.raise_for_status()
    return resp.json()["body"]["products"]

def search_url(host, path, query):
    q = urllib.parse.quote_plus(query)
    return f"https://www.{host}/{path}{q}"

Der Parameter scraper übernimmt die schwere Arbeit: amazon-serp und ebay-serp weisen die API an, geparste Produktlisten statt rohem Markup zurückzugeben. Der Parameter country leitet die Anfrage durch eine IP in dieser Region, was wichtig ist, weil Preise und Verfügbarkeit lokalisiert sind. Ein kleiner Wrapper treibt jetzt beide Quellen an.

python
def collect_amazon(query, country="US"):
    url = search_url("amazon.com", "s?k=", query)
    return collect(url, "amazon-serp", country)

def collect_ebay(query, country="US"):
    url = search_url("ebay.com", "sch/i.html?_nkw=", query)
    return collect(url, "ebay-serp", country)

Jeder Aufruf gibt eine Liste von Produkt-Dictionaries zurück. Die Form unterscheidet sich je nach Quelle (Amazon gibt Ihnen name und eine flache price-Zeichenkette; eBay verschachtelt den aktuellen Preis unter price.current.to), was genau der Grund ist, warum der nächste Schritt existiert.

In eine saubere Form normalisieren

Rohe Preisdaten sind nie analysebereit. Sie erhalten Währungssymbole, Tausendertrennzeichen, "ab"-Bereiche und ein anderes Feldlayout je nach Quelle. Normalisieren Sie beim Erfassen, sodass alles Downstream dieselben Spalten sieht: eine Quelle, ein Produktname, ein numerischer Preis, eine Währung und die Listing-URL. Einmalig hier zu normalisieren ist das, was den Speicher- und Analyse-Code einfach hält.

python
from price_parser import Price

def to_row(source, name, raw_price, url):
    parsed = Price.fromstring(raw_price or "")
    if parsed.amount is None:
        return None
    return {
        "source": source,
        "product": name.strip(),
        "price": float(parsed.amount),
        "currency": parsed.currency or "",
        "url": url,
    }

def normalize(query, country="US"):
    rows = []
    for item in collect_amazon(query, country):
        row = to_row("Amazon", item["name"], item.get("price"), item["url"])
        if row: rows.append(row)
    for item in collect_ebay(query, country):
        raw = item["price"]["current"]["to"]
        row = to_row("eBay", item["title"], raw, item["url"])
        if row: rows.append(row)
    return rows

price_parser übernimmt das Parsen der Währung für Sie: Es liest "£1.138,00" oder "$709,00" und gibt einen sauberen Betrag und Währungscode zurück, sodass ein Preisvergleich sich nie darum kümmern muss, welches Symbol eine Quelle verwendet hat. Nach diesem Schritt sieht jede Beobachtung gleich aus, unabhängig davon, woher sie stammt.

json
[
  {
    "source": "Amazon",
    "product": "Apple iPhone 15 Pro Max 256GB",
    "price": 1138.0,
    "currency": "USD",
    "url": "https://www.amazon.com/dp/B0DGTJ6Y1S"
  },
  {
    "source": "eBay",
    "product": "Apple iPhone 15 Pro Max 256GB Blue Titanium",
    "price": 709.0,
    "currency": "USD",
    "url": "https://www.ebay.com/itm/236096139018"
  }
]
Crawlbase Crawling API

Preisintelligenz steht und fällt mit zuverlässiger Sammlung. Die Crawling API rendert clientseitige Seiten hinter rotierenden Residential-IPs in einem Aufruf, und für große Marktplätze geben ihre integrierten Scraper sauberes Produkt-JSON zurück, sodass Sie sowohl eine Headless-Flotte als auch den Großteil Ihres Parsing-Codes überspringen. Zeigen Sie sie auf einer öffentlichen Suchseite im kostenlosen Tier zuerst auf.

Jeden Lauf mit einem Zeitstempel speichern

Eine einzelne normalisierte Liste ist eine Momentaufnahme. Preisintelligenz dreht sich um den Trend, sodass jeder Lauf mit einem angehängten Zeitstempel in den Speicher gelangen muss. Eine flache CSV mit einer angehängten captured_at-Spalte reicht aus, um anzufangen, und sie lädt direkt in pandas oder eine Tabellenkalkulation später.

python
import csv, os
from datetime import datetime, timezone

FIELDS = ["captured_at", "source", "product", "price", "currency", "url"]

def store(rows, path="price_history.csv"):
    stamp = datetime.now(timezone.utc).isoformat()
    new_file = not os.path.exists(path)
    with open(path, "a", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=FIELDS)
        if new_file:
            writer.writeheader()
        for row in rows:
            writer.writerow({"captured_at": stamp, **row})

if __name__ == "__main__":
    rows = normalize("Apple iPhone 15 Pro Max 256GB", country="US")
    store(rows)
    print(f"stored {len(rows)} rows")

Führen Sie das nach Zeitplan aus (ein Cron-Job alle paar Stunden oder stündlich, wenn Ihr Tier es erlaubt) und price_history.csv wächst zu einer echten Zeitreihe. Wenn Sie eine flache Datei überwachsen, schreiben Sie dieselben Zeilen stattdessen in eine Datenbanktabelle; die normalisierte Form bedeutet, dass sich nichts anderes ändert. Wenn Sie über viele Produkte und Regionen sammeln, lässt der asynchrone Crawler Sie große Batches von URLs pushen und Ergebnisse per Webhook empfangen statt bei jeder Anfrage zu blockieren.

Analysieren: Quellen vergleichen und Bewegungen erkennen

Mit gespeicherter Geschichte ist die Analyse kurz. Laden Sie die CSV in pandas, gruppieren Sie nach Quelle und vergleichen Sie. Hier ist die klassische Preisintelligenz-Frage: Wo ist es für ein gegebenes Produkt gerade billiger und um wie viel?

python
import pandas as pd

df = pd.read_csv("price_history.csv", parse_dates=["captured_at"])

# Latest run only, for a head-to-head comparison
latest = df[df["captured_at"] == df["captured_at"].max()]
by_source = latest.groupby("source")["price"].agg(["mean", "min", "count"]).round(2)
print(by_source)

# Day-over-day move per source, from the stored history
daily = df.set_index("captured_at").groupby("source")["price"]
trend = daily.resample("D").mean().round(2)
print(trend.pct_change().round(3))

Der erste Block sagt Ihnen, wer heute billiger ist; der zweite wandelt Ihre gespeicherte Geschichte in einen täglichen Trend und eine prozentuale Veränderung um, was das Signal ist, auf das Sie tatsächlich reagieren. Ein Rückgang über einen Schwellenwert kann einen Alarm auslösen; ein stetiger Anstieg sagt Ihnen, dass sich der Markt bewegt und Ihre eigene Preisgestaltung möglicherweise überprüft werden sollte. Alles hier ist einfaches pandas, weil die schwere Arbeit zuvor in Sammlung und Normalisierung geleistet wurde.

Optional: KI darüber legen

Sie brauchen kein maschinelles Lernen für Preisintelligenz, aber zwei Probleme werden damit einfacher, wenn Sie im großen Maßstab sammeln.

Das erste ist Produktabgleich. Dasselbe Produkt ist auf jeder Seite unterschiedlich betitelt ("iPhone 15 Pro Max 256GB" vs. "Apple iPhone 15 Pro Max (256 GB) Blau Titan"), sodass der Vergleich von Gleichem mit Gleichem bedeutet, Listings zu clustern, die sich auf dasselbe Produkt beziehen. Titel einzubetten und nach Ähnlichkeit zu gruppieren erledigt das viel besser als Zeichenkettenabgleich, und es ist der Unterschied zwischen einem echten Vergleich und Rauschen.

Das zweite ist Anomalieerkennung. Über eine lange genug Geschichte sind die meisten Preisbewegungen normale saisonale Drift. Eine einfache rollende Statistik (markieren Sie jede Beobachtung, die mehr als einige Standardabweichungen vom nachlaufenden Mittelwert eines Produkts entfernt ist) erkennt die echten Ereignisse, einen plötzlichen Preisunterschied oder einen Preisfehler, ohne dass Sie ein Dashboard beobachten müssen. Beginnen Sie mit dieser Regel; greifen Sie nur auf ein Modell zurück, wenn die einfache Version nicht mehr ausreicht.

Im großen Maßstab unblockiert bleiben

Auch wenn Rendering und IPs von der API gehandhabt werden, halten einige Gewohnheiten einen wiederkehrenden Sammelauftrag gesund, und sie gelten für jedes harte kommerzielle Ziel.

  • Anfragen dosieren. Die Standardrate der Crawling API ist für E-Commerce großzügig, aber das Hämmern derselben Suche in einer engen Schleife lädt trotzdem zu Drosselung ein. Verteilen Sie Läufe und variieren Sie Ihre Abfragen. Wenn Sie anfangen, 429-Codes zu sehen, ist das das Rate-Limit-Signal.
  • Auf Rotation setzen. Ein Pool von Residential Proxies verteilt Anfragen über viele echte Benutzer-IPs, sodass keine einzelne Adresse ein Limit auslöst. Die API erledigt das für Sie; wenn Sie Ihren eigenen Stack aufbauen, ist das der Teil, den Sie richtig machen müssen. Der Smart AI Proxy stellt dieselbe Rotation als Standard-Proxy-Endpunkt bereit, wenn Sie diese Integration bevorzugen.
  • Status-Codes lesen. Für fehlgeschlagene Anfragen werden Ihnen keine Kosten berechnet, sodass ein fehlgeschlagener Crawl günstig zu wiederholen ist. Ein Lauf, der anfängt, Challenges zurückzugeben, sagt Ihnen, dass das aktuelle Tier nicht mehr ausreicht.

Für das vollständige Handbuch, lesen Sie wie man Websites scrapet ohne blockiert zu werden. Wenn Ihre Sammlung über einige Produkte auf Tausende von SKUs über Regionen hinweg wächst, deckt Large-Scale E-Commerce Scraping die Architektur für dieses Volumen ab.

Der ehrliche Teil: ToS und öffentliche Daten

Das Scrapen eines großen kommerziellen Marktplatzes befindet sich in einer rechtlichen Grauzone, und ob es erlaubt ist, hängt von den Nutzungsbedingungen der Plattform, Ihrer Gerichtsbarkeit und dem ab, was Sie mit den Daten machen. Die meisten Marktplatz-Bedingungen schränken automatisierten Zugriff ein, sodass die Sammlung gegen diese Bedingungen verstoßen kann, unabhängig davon, wie sorgfältig Ihr Tooling ist. Keiner der hier verwendeten Codes ändert das; er lässt nur den technischen Teil funktionieren.

Einige Leitlinien, an denen es sich lohnt festzuhalten. Sammeln Sie nur öffentliche Daten: Produktnamen, Preise, Währungen und Listing-URLs, die jeder ohne Konto sehen kann. Respektieren Sie die robots.txt jeder Seite und ihre angegebenen Rate-Erwartungen, und halten Sie Ihr Volumen niedrig genug, dass Sie niemandes Server belasten. Sammeln Sie niemals personenbezogene Daten, einschließlich alles, das mit einzelnen Verkäufer- oder Käuferkonten verbunden ist. Und wenn Sie vorhaben, die Daten kommerziell zu nutzen, holen Sie Erlaubnis oder eine offizielle Datenvereinbarung statt anzunehmen, dass Schweigen Zustimmung bedeutet. Dieser Leitfaden ist aus gutem Grund auf öffentliche Listing-Daten beschränkt, weil das die Linie ist, die die Arbeit vertretbar macht.

Zusammenfassung

Wichtigste Erkenntnisse

  • Preisintelligenz ist vier Aufgaben, nicht eine. Sammeln, normalisieren, mit Zeitstempel speichern, dann analysieren. Das Scraping ist nur der erste Schritt.
  • Zuverlässiges Sammeln braucht Rendering und eine vertrauenswürdige IP. Die Crawling API erledigt beides in einem Aufruf, und ihre integrierten Scraper geben sauberes JSON für unterstützte Marktplätze zurück, sodass kein HTML-Parsing zu pflegen ist.
  • Beim Erfassen normalisieren. Parsen Sie Währungszeichenketten einmalig in Zahlen, in eine Form, und jeder Speicher- und Analyseschritt bleibt einfach.
  • Der Wert liegt in der Zeitreihe. Hängen Sie jeden Lauf mit einem captured_at-Stempel an, damit Sie Trends und Tag-zu-Tag-Bewegungen lesen können, nicht nur eine Momentaufnahme.
  • KI ist optionale Verfeinerung. Einbettungen helfen, dasselbe Produkt über Seiten hinweg abzugleichen; eine Rollstatistik-Regel markiert echte Preisanomalien. Greifen Sie darauf zurück, wenn die einfache Version nicht mehr skaliert.
  • Bei öffentlichen Daten bleiben. ToS und robots.txt respektieren; keine Konten, keine personenbezogenen Daten.

Häufig gestellte Fragen

Was ist Web Scraping für Preisintelligenz?

Es ist die Praxis, automatisch Preise von öffentlichen Produktseiten zu sammeln, sie in saubere Zahlen zu normalisieren und sie über die Zeit zu verfolgen, damit Sie Konkurrenten vergleichen und Marktbewegungen erkennen können. Das Scraping sammelt die rohen Beobachtungen; die Intelligenz kommt aus dem Speichern einer Zeitreihe und der Analyse des Trends statt das Lesen einer einzelnen Momentaufnahme.

Muss ich HTML parsen, um Preise zu sammeln?

Nicht für die großen Marktplätze. Die integrierten Scraper der Crawling API (und die Scraper API) geben geparsten Produkt-JSON für unterstützte Sites wie Amazon und eBay zurück, sodass Sie Selektoren ganz überspringen. Sie fallen nur auf das Parsen von rohem HTML zurück, wenn eine Zielsite nicht abgedeckt ist; in diesem Fall gibt die API trotzdem die gerenderte Seite aus, mit der Sie arbeiten können.

Wie oft soll ich Preise sammeln?

Das hängt davon ab, wie schnell sich Ihr Markt bewegt und wie groß Ihr Anfrage-Budget ist. Stündlich reicht für die meisten Kataloge; schnell bewegende Kategorien möchten vielleicht mehr, langsame weniger. Egal welcher Rhythmus, hängen Sie jeden Lauf mit einem Zeitstempel an, damit Sie echte Geschichte aufbauen. Dosieren Sie Anfragen und variieren Sie Abfragen, damit ein wiederkehrender Auftrag nicht wie ein Burst-Angriff aussieht.

Wie vergleiche ich dasselbe Produkt über verschiedene Seiten hinweg?

Titel unterscheiden sich auf jedem Marktplatz, sodass exakter Zeichenkettenabgleich scheitert. Normalisieren Sie jedes Listing beim Erfassen in dieselben Felder, dann gleichen Sie Produkte nach Ähnlichkeit statt nach identischem Text ab. Für eine Handvoll SKUs funktioniert eine manuelle Zuordnung; im großen Maßstab ist das Einbetten der Titel und das Clustern nach Ähnlichkeit der zuverlässige Ansatz.

Werde ich beim Sammeln von Preisen im großen Maßstab blockiert?

Das können Sie, wenn Sie Scraper-ähnlichen Traffic von einer einzelnen IP senden. Halten Sie die Rate pro IP niedrig, variieren Sie Ihre Suchparameter und leiten Sie durch rotierende Residential-IPs, sodass keine Adresse ein Limit auslöst. Die Crawling API und Smart AI Proxy verwalten 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. Für fehlgeschlagene Anfragen werden Ihnen keine Kosten berechnet, sodass das Wiederholen eines blockierten Crawls günstig ist.

Das hängt von den Nutzungsbedingungen des Ziels, Ihrer Gerichtsbarkeit und Ihrem Zweck ab, und die meisten Marktplatz-Bedingungen schränken automatisierten Zugriff ein. Bleiben Sie strikt bei öffentlichen Listing-Daten (Namen, Preise, Währungen, URLs), respektieren Sie robots.txt und Rate-Erwartungen und berühren Sie niemals Konten oder personenbezogene Daten. Für kommerzielle Nutzung holen Sie Erlaubnis oder eine offizielle Datenvereinbarung statt sich auf einen Scraper zu verlassen.

Jetzt loslegen

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.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar