Wie implementiert man ein Mapping-System für heterogene Datenquellen, um unterschiedliche HTML-Strukturen in ein einheitliches JSON-Schema zu überführen?

Die Implementierung eines Mapping-Systems für heterogene HTML-Quellen erfordert die strikte Trennung von Extraktionslogik und Datenmodell. Wir setzen hierfür auf einen konfigurationsbasierten Ansatz, bei dem für jede Datenquelle eine spezifische Mapping-Definition hinterlegt wird. Diese Definition steuert die Beziehung zwischen den HTML-Selektoren (CSS-Selektoren oder XPath) und den Zielfeldern des einheitlichen JSON-Schemas.

Der technische Workflow gliedert sich in drei Phasen:

  1. Extraktion: Ein Parser liest das HTML-Dokument und wendet die quellenspezifischen Selektoren an, um die Rohwerte zu isolieren.
  2. Transformation: Die extrahierten Rohdaten durchlaufen eine Pipeline aus Normalisierungsfunktionen. Hier werden Datentypen konvertiert, Whitespaces entfernt oder Währungsformate vereinheitlicht.
  3. Validierung: Das resultierende JSON-Objekt wird gegen ein definiertes JSON-Schema (z. B. via Ajv oder Pydantic) geprüft, um die strukturelle Integrität zu garantieren.
KomponenteFunktionBeispiel-Implementierung
Selector MapZuordnung HTML $\rightarrow$ JSON{"price": ".product-price > span"}
TransformerDatenbereinigungvalue.replace('€', '').trim()
Schema ValidatorStrukturprüfungJSON Schema Draft 7

Um die Wartbarkeit zu erhöhen, lagern wir die Mapping-Definitionen in eine Datenbank oder ein Versionierungssystem aus. So können Anpassungen an der HTML-Struktur einer externen Quelle vorgenommen werden, ohne den Kerncode der Applikation neu deployen zu müssen. In unseren Projekten im Bereich Data Engineering nutzen wir diesen modularen Aufbau, um die Skalierbarkeit bei einer steigenden Anzahl an Quellen zu gewährleisten.

Die Transformationen sollten als reine Funktionen (Pure Functions) implementiert werden. Dies ermöglicht ein präzises Unit-Testing der Mapping-Logik, unabhängig vom eigentlichen HTTP-Request oder dem Zustand des Zielsystems.

Wir empfehlen den Verzicht auf automatisierte "Auto-Mapping"-Tools, die auf Heuristiken oder Machine Learning basieren, sofern die Datenqualität kritisch ist. Diese Ansätze führen bei heterogenen Strukturen zu instabilen Ergebnissen. Die einzige zuverlässige Methode ist die explizite Definition von Selektoren kombiniert mit einer strikten Schema-Validierung am Ende der Pipeline.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt