Web-Scraping Best Practices 2026: Ein Leitfaden aus der Praxis
Das sind die Praktiken, die beim Aufbau und Betrieb der produktionsreifen Scraper in meinem Katalog am meisten zählen.
Architektur: In Pipelines denken, nicht in Skripten
Der größte Fehler, den ich immer wieder sehe: Scraping als Ein-Schritt-Prozess zu behandeln. Produktionsreife Scraper sind Datenpipelines:
- URL-Erkennung — finden, was gescraped werden soll (Sitemaps, Kategorieseiten, Suche, APIs)
- Request-Ausführung — Daten abrufen, mit sauberem Retry und Rotation
- Parsing — strukturierte Felder aus Rohantworten extrahieren
- Normalisierung — Output bereinigen, validieren und standardisieren
- Speicherung — in Datasets, Datenbanken oder nachgelagerte Systeme schreiben
Jeder Schritt sollte unabhängig testbar und wiederholbar sein. Wenn Sephora das Layout der Produktseite ändert, muss nur Schritt 3 angepasst werden — der Rest der Pipeline bleibt stabil.
APIs immer HTML-Parsing vorziehen
Bevor auch nur ein einziger CSS-Selektor geschrieben wird: prüfen, ob die Seite Folgendes bietet:
- Öffentliche APIs — dokumentierte Endpunkte, die JSON zurückgeben
- Private APIs — XHR-/Fetch-Calls, sichtbar in den Browser-DevTools
- GraphQL-Endpunkte — zunehmend verbreitet, oft mit aktivierter Introspection
- Eingebettetes JSON —
__NEXT_DATA__,window.__INITIAL_STATE__oder JSON-LD im HTML
API-Antworten sind strukturiert, versioniert und deutlich stabiler als HTML-Layouts.
Proxy-Strategie: Passend zum Schutzniveau
Nicht jede Seite braucht Residential Proxys. Hier mein Entscheidungsraster:
| Schutzniveau | Proxy-Typ | Beispiel-Sites |
|---|---|---|
| Keins / Basic | Rechenzentrum | Kleine Seiten, viele öffentliche APIs |
| Rate-Limiting | Rotierendes Rechenzentrum | Mittlerer E-Commerce, Content-Seiten |
| Fingerprinting | Residential | große Marken |
| Erweiterte WAF | Residential + TLS-Fingerprint | Akamai, Cloudflare Enterprise |
Die Kernerkenntnis: Proxy-Kosten skalieren mit dem Schutzniveau. Kein Geld für Residential Proxys ausgeben, wenn eine Seite nur Rate-Limiting macht. Mein Shopify Scraper nutzt standardmäßig Apifys Rechenzentrums-Proxy, aber viele Shops blockieren Rechenzentrums-IP-Bereiche, daher sind Residential Proxys die empfohlene Einstellung.
Session-Management ist alles
Der Unterschied zwischen 60% und 99% Erfolgsquote liegt meist im Session-Management:
- Sessions rotieren, nicht nur IPs — eine neue IP mit denselben Cookies wirkt verdächtig
- Sessions aufwärmen — die Startseite besuchen, bevor Produktseiten angefragt werden
- Rate Limits respektieren — 5 gleichzeitige Anfragen schlagen 50, die geblockt werden
- Exponential Backoff — Retries nach 1s, 2s, 4s, 8s, nicht sofort erneut versuchen
Ein robuster Scraper verwaltet Session-Token mit automatischem Refresh und Exponential Backoff und hält persistente Sessions aufrecht, die wie echte Browsing-Muster aussehen.
Output normalisieren
Rohe gescrapte Daten sind unordentlich. Alles normalisieren:
Preise
Als Integer speichern (Cent, nicht Euro/Dollar). $29.99 wird zu 2999. Das vermeidet Floating-Point-Präzisionsfehler, die Finanzdaten nachgelagert verfälschen. Meine E-Commerce-Scraper folgen dieser Konvention, mit einer Ausnahme: Der Sephora-Scraper behält Dezimalpreise (72.0) bei.
URLs
Immer absolute URLs speichern, nie relative Pfade. Zum Zeitpunkt der Extraktion auflösen.
Datumsangaben
ISO 8601 (2026-04-01T00:00:00Z), immer mit Zeitzone. Niemals lokal formatierte Datumswerte speichern.
Text
Überschüssige Leerzeichen entfernen, Unicode normalisieren und eine HTML-Handling-Policy festlegen (Tags entfernen vs. Formatierung erhalten).
Fehlerbehandlung: Mit Fehlschlägen rechnen
Produktionsreife Scraper scheitern ständig — die Frage ist, wie elegant. Mein Ansatz:
1Request fails (network error, timeout, 4xx/5xx)
2 → Retry with exponential backoff (up to 5 attempts)
3 → Rotate session/proxy on retry
4 → Log failure with full context if all retries exhausted
5 → Continue processing remaining URLs (don't crash the batch)
Erfolgsquoten pro URL-Muster nachverfolgen. Wenn /category/*-Seiten plötzlich unter 90% Erfolgsquote fallen, hat sich auf der Seite wahrscheinlich etwas geändert — das fällt auf, bevor Nutzer es melden.
Monitoring und Alerting
Ein Scraper ohne Monitoring ist ein Scraper, der nur darauf wartet, still zu versagen. Nachverfolgen:
- Erfolgsquote pro Run und pro URL-Muster
- Output-Anzahl — plötzliche Einbrüche bedeuten, dass etwas kaputt ist
- Datenqualität — Null-Felder, unerwartete Werte, Schema-Verletzungen
- Kosten — Proxy-Nutzung, Rechenzeit, Storage
Alle meine Apify-Actors stellen diese Metriken bereit. Sinkt die Erfolgsquote, werde ich innerhalb von Stunden benachrichtigt — oft bevor es einem Nutzer auffällt.
Einfach starten, Komplexität nach Bedarf hinzufügen
Jeder Scraper, den ich baue, startet als die einfachste Lösung, die funktioniert:
- HTTP + Cheerio zuerst (am schnellsten, am günstigsten)
- Fingerprinting ergänzen nur bei Blockaden
- Browser-Rendering ergänzen nur wenn JavaScript erforderlich ist
- Proxy-Rotation ergänzen nur bei Rate-Limiting
Ein Scraper, der strukturierte Daten über einfaches HTTP liest, braucht keinen Browser. Mein Universal Web Printer nutzt Playwright, weil er JavaScript rendern muss. Das richtige Werkzeug für die jeweilige Aufgabe.
Das sind keine theoretischen Prinzipien — sie stammen aus produktiven Scrapern im Live-Betrieb. Für einen individuellen Scraper nach diesen Prinzipien — jetzt Kontakt aufnehmen.