Fallstudie: Wie aus 50 einzelnen Scrapern eine ETL-Pipeline mit Historie wurde
Einmal im Monat, abends, mit einem Bier: ein Scraper nach dem anderen von Hand gestartet, über fünfzig Stück, und danach eine Nacht-und-Nebel-Session, um die Ergebnisse in einer einzigen, immer größer werdenden Excel-Tabelle zusammenzuführen. Genau diesen Prozess habe ich für einen Kunden abgelöst, der Daten von über fünfzig verschiedenen Websites zusammenführen musste.
Die Ausgangslage
Der Kunde brauchte Daten aus mehr als fünfzig unterschiedlichen Quellen, konsolidiert an einer Stelle. Entstanden war das über Jahre: für jede Quelle ein eigenes, kleines Scraper-Skript, keine gemeinsame Struktur, keine einheitliche Fehlerbehandlung. Die Ergebnisse liefen alle in eine einzige, stetig wachsende Excel-Datei, manuell zusammengeführt und angereichert.
Weil irgendwann ein historischer Trend erkennbar sein sollte – der zu diesem Zeitpunkt noch gar nicht existierte, aber absehbar gebraucht würde – wurden sämtliche bisherigen Scraping-Ergebnisse aufgehoben. Jede einzelne Monatsauswertung als eigene Excel-Datei, unangetastet, für den Fall, dass sie später einmal gebraucht würde.
Der Ablauf jeden Monat: alle Scraper nacheinander von Hand starten, warten, die Rohdaten in die Sammel-Tabelle einpflegen, Dubletten und Widersprüche manuell auflösen. Wieder und wieder, jeden Monat aufs Neue.
Warum das nicht nur lästig, sondern riskant war
Manuelle Konsolidierung in dieser Größenordnung bringt Fehler mit sich, die nicht sofort auffallen: Ein Kontakt taucht bei einer Quelle unter leicht anderer Schreibweise auf und wird als neue Person angelegt, statt als Aktualisierung erkannt zu werden. Eine Telefonnummer wird als Mobilnummer interpretiert, obwohl sie eine Festnetznummer ist. Eine Adressänderung wird nicht von einem kompletten Betreiberwechsel unterschieden.
Jede dieser Verwechslungen bleibt in der Excel-Tabelle bestehen, wird beim nächsten Durchlauf weiter mitgeschleppt und lässt sich Monate später kaum noch zurückverfolgen – schon allein deshalb, weil nirgendwo festgehalten wurde, wann sich was geändert hat und warum.
Die technische Lösung
Der erste Schritt war, alle fünfzig-plus Scraper zu analysieren und auf eine gemeinsame technische Basis zu bringen: einheitliche Fehlerbehandlung, angeglichene Datenstrukturen, statt fünfzig verschiedener Insellösungen.
Darauf aufbauend wurde eine echte ETL-Pipeline definiert:
Normalisierungsregeln pro Datentyp. Wie muss eine Telefonnummer aussehen, damit Festnetz- und Mobilnummern zuverlässig unterschieden werden? Ist eine Adresse privat oder ein Geschäftssitz? Handelt es sich um eine Namensänderung, eine neue Person, oder nur eine Schreibvariante, die normalisiert gehört? Adressen kommen in x verschiedenen Formaten – auch die mussten auf eine einheitliche Form gebracht werden.
Abgleich mit dem bestehenden Datenbestand. Existiert der Eintrag schon? Welche Felder dürfen automatisch überschrieben werden, und welche wurden vielleicht manuell korrigiert und dürfen deshalb nicht einfach von der nächsten Scraper-Runde überschrieben werden?
Historisierung nach dem SCD2-Prinzip (Slowly Changing Dimension Type 2): Änderungen werden nicht überschrieben, sondern als neue, zeitlich gültige Version gespeichert – der alte Stand bleibt nachvollziehbar erhalten, statt verloren zu gehen.
Das Ergebnis
Jeder einzelne Scraper kann heute jederzeit unabhängig laufen, weil Zeitstempel und Historie sauber mitgeführt werden. Genauso lassen sich alle auf einmal anstoßen – das System arbeitet sie teils parallel, teils sequenziell ab, bereinigt und führt die Ergebnisse zusammen, reichert sie an und schreibt die Historie fort.
Am Ende steht wieder eine bereinigte Excel-Tabelle zum Download – wahlweise gefiltert nach beliebigen Eigenschaften -, aber ohne dass vorher noch jemand manuell etwas zusammensuchen musste. Die monatliche Nacht-und-Nebel-Session ist komplett entfallen.
Warum das mehr ist als „einfach nur ein Import-Skript“
Der naheliegende Reflex bei so einer Aufgabe ist, die Scraper einfach schneller oder gemeinsam laufen zu lassen. Der eigentliche Wert entsteht aber in der Schicht dazwischen: den Normalisierungsregeln, die entscheiden, was überhaupt derselbe Datensatz ist, und der Historisierung, die eine spätere Trendauswertung erst möglich macht – genau die zwei Dinge, die in der ursprünglichen Excel-Lösung komplett gefehlt haben.
Weitere Ressourcen
Zur Frage, wann sich der Aufbau einer eigenen Datenpipeline überhaupt lohnt:
→ Datenpipeline aufbauen oder kaufen? Make-or-Buy
Wenn du wissen willst, ob deine eigenen Datenimporte sauber aufgestellt sind:
→ Kostenloser KI-Compliance Schnellcheck
Für eine vollständige technische Analyse:


