Entdecken Sie unsere neue Funktion:Entdecken Sie AI Price Intelligence

Zurück zum Blog

Category: Scraping

Aufbau einer skalierbaren Web-Scraping-Architektur in Python & Go

11 Min. LesezeitPublished: 10. Juli 2026

Erfahren Sie, wie Sie mit Python und Go eine skalierbare, hexagonale Architektur für Web-Scraping aufbauen. Meistern Sie Techniken zur Umgehung von PerimeterX & HUMAN Security.

Was ist eine skalierbare Web-Scraping-Architektur?

Eine skalierbare Web-Scraping-Architektur ist ein Systementwurf, der trennt, *was* erfasst werden soll, von *wie* die Erfassung geschieht. Dadurch erfordern neue Quellen, geänderte Netzwerkstrategien oder ein Wechsel der Laufzeitumgebung kein Umschreiben der Geschäftslogik. In der Praxis bedeutet das eine Ports-and-Adapters-Struktur (hexagonal): ein stabiler Kern, umgeben von austauschbaren Adaptern für Netzwerk, Parsing, Speicherung und Planung.

Die Alternative — ein Skript pro Website — funktioniert etwa bis zur zehnten Quelle und wird danach zu einer Wartungslast, die niemand übernehmen möchte.

Warum hexagonale Architektur für Scraping?

Scraping-Systeme scheitern auf eine bestimmte Weise: Die Außenwelt ändert sich ständig, während die Geschäftsregeln stabil bleiben. Eine Website ergänzt Cloudflare, ein Marktplatz ändert sein DOM, der Proxy-Anbieter wird gewechselt, eine Kategorie braucht statt rohem HTTP einen Headless-Browser.

Die hexagonale Architektur kapselt jede dieser volatilen Zuständigkeiten hinter einem Port:

  • Netzwerkadapter — wie eine Anfrage gestellt wird und welchen Fingerabdruck sie hinterlässt
  • Parser-Adapter — wie aus einer Antwort strukturierte Datensätze werden
  • Speicheradapter — wohin die Datensätze geschrieben werden
  • Scheduler-Adapter — wann und wie oft ein Job läuft

Der Kern — Produktmodelle, Abgleichsregeln, Validierung — importiert keinen davon. Wenn eine Website Ihre TLS-Signatur blockiert, tauschen Sie einen Adapter aus, nicht die Pipeline.

Wie erkennen Websites Scraper auf Netzwerkebene?

Websites wie Amazon und Walmart erkennen Standard-HTTP-Anfragen über TLS-Fingerprinting (JA3/JA4). Jeder HTTP-Client erzeugt einen charakteristischen Handshake — Reihenfolge der Cipher Suites, Extensions, elliptische Kurven — und der Fingerabdruck eines Python-Clients ähnelt dem von Chrome in keiner Weise, unabhängig davon, was der User-Agent-Header behauptet.

In unserer Netzwerkadapter-Schicht verwenden wir statt eines Standard-HTTP-Clients Adapter, die Browserverhalten auf TLS-Ebene nachbilden. In Go-basierten Systemen binden wir die Bibliothek curl_cffi über einen CGO-Wrapper ein, um die TLS-Handshake-Signatur von Chrome zu reproduzieren. Auf der Python-Seite nutzen wir httpx mit eigenen TLS-Adaptern oder direkt curl_cffi, um Verbindungen aufzubauen, die die Sensoren von PerimeterX und HUMAN Security nicht schon bei der ersten Anfrage auslösen.

Über TLS hinaus zählen drei Signale:

  • HTTP/2-Frame-Reihenfolge und Header-Schreibweise, die sich zwischen echten Browsern und den meisten Bibliotheken unterscheiden
  • Anfragetiming, bei dem perfekt gleichmäßige Intervalle verräterischer sind als das Volumen
  • IP-Reputation, bei der Rechenzentrumsbereiche anders bewertet werden als Privatanschlüsse

Python oder Go — welche Schicht bekommt was?

Über diese Frage wird am längsten gestritten, und die Antwort ist unspektakulär: Nutzen Sie beides, aufgeteilt nach Art der Last.

  • Go für die Fetch-Schicht. Goroutinen machen Zehntausende gleichzeitige Verbindungen günstig, der Speicherverbrauch bleibt unter Last flach, und ein einzelnes Binary lässt sich überall ausrollen. Hier wird Durchsatz gewonnen.
  • Python für Parsing, Normalisierung und Abgleich. Das Daten-Ökosystem ist unerreicht, und Parsing ist IO-leicht, aber logiklastig — genau dort schlägt Entwicklungsgeschwindigkeit rohe Performance.

Verbinden Sie beide über eine Queue statt über einen Funktionsaufruf. Go-Worker veröffentlichen Rohdaten, Python-Consumer transformieren sie. Beide Seiten skalieren unabhängig, und ein Parser-Fehler legt nie die Erfassung lahm.

Wie sollten Queue und Scheduler entworfen werden?

Zwei Regeln verhindern die meisten Produktionsvorfälle:

  • Pro Quelle planen, nicht global. Die Erfassungsfrequenz sollte der tatsächlichen Änderungsgeschwindigkeit jeder Quelle folgen. Alles stündlich laufen zu lassen verschwendet Budget bei stabilen Kategorien und hinkt bei schnellen trotzdem hinterher.
  • Retries idempotent und begrenzt halten. Ein fehlgeschlagener Fetch muss gefahrlos wiederholbar sein und irgendwann aufhören. Unbegrenzte Wiederholungen gegen eine blockierende Website machen aus einer kleinen Störung eine IP-Sperre.

Speichern Sie Rohantworten vor dem Parsen. Speicher ist günstig, erneute Erfassung nicht — und wenn drei Wochen später ein Parser-Fehler auffällt, ist das erneute Verarbeiten gespeicherter Daten besser als ein erneuter Crawl eines Marktplatzes, der sein Layout inzwischen geändert hat.

Warum ist Observability entscheidend?

Scraping-Systeme fallen teilweise und leise aus. Ein Selektor bricht in einer Kategorie, die Pipeline meldet weiterhin Erfolg, und diese Kategorie liefert still Nullwerte.

Erfassen Sie mindestens:

  • Fetch-Erfolgsquote pro Quelle, nicht aggregiert
  • Parsing-Ausbeute — extrahierte Datensätze je abgerufener Seite
  • Nullwertquoten auf Feldebene, die defekte Selektoren erkennen, bevor es jemandem auffällt
  • Aktualitätsverteilung, damit Sie das Alter Ihres schlechtesten Datensatzes kennen, nicht nur den Durchschnitt

Senkrondata betreibt diese Architektur produktiv mit einem Datengenauigkeits-SLA von 97,2 % über 500 Mio.+ Datensätze und 23 Länder. Die oben beschriebene Validierungsschicht macht diese Zahl belastbar statt bloß wünschenswert.

Selbst bauen oder einkaufen?

Diesen Stack selbst zu bauen ist durchaus machbar — die obigen Komponenten sind der ehrliche Bauplan. Unterschätzt wird, dass die Arbeit nie endet: Anti-Bot-Anbieter liefern laufend Änderungen aus, und ein Scraper ist nur bis zum nächsten Deployment der Gegenseite korrekt.

Wenn Ihr Unterscheidungsmerkmal ist, was Sie mit den Daten tun, und nicht, wie Sie sie erfassen, stellen unsere E-Commerce-Scraper-API und unsere Scraper-APIs diese Infrastruktur direkt bereit. Wenn Sie abwägen, wo Crawling endet und Scraping beginnt, behandelt unser Leitfaden Daten-Crawling vs. Daten-Scraping genau diese Abgrenzung.

K

Kerem

Strategischer Leiter, Senkrondata

Kerem verantwortet die Strategie bei Senkrondata und bringt langjährige Erfahrung in Data Engineering und Marktanalyse mit.

Mehr von Kerem

Kontaktieren Sie uns

Hinterlassen Sie Ihre E-Mail-Adresse für eine detaillierte Demo oder eine Übersichtsitzung, wir werden uns in Kürze bei Ihnen melden.