Python HTML Parser richtig nutzen: Schritt-für-Schritt-Anleitung

Zuletzt aktualisiert am June 18, 2026
Python HTML Parser richtig nutzen: Schritt-für-Schritt-Anleitung

Niemand steht morgens auf und freut sich darauf, 500 Zeilen Produktpreise per Copy-and-paste in eine Tabelle zu übertragen. (Wer es trotzdem tut, hat meinen Respekt – und sollte über eine gute Handgelenkbandage nachdenken.) Ob Sie im Vertrieb arbeiten, in den Operations oder Ihr Unternehmen schlicht einen Schritt vor der Konkurrenz halten wollen: Das mühsame Sammeln von Website-Daten kennen Sie wahrscheinlich aus eigener Erfahrung. Die Wirtschaft läuft heute auf Web-Daten, und die Nachfrage nach automatisierter Extraktion explodiert förmlich – der Markt für Web-Scraping-Software soll bis 2032 auf über 11 Milliarden US-Dollar (ca. 10 Milliarden Euro) wachsen.

web-data-manual-vs-automated-comparison-illustration.png

Ich habe jahrelang im Maschinenraum von SaaS und Automatisierung gearbeitet und dort so ziemlich alles gesehen: von heroischen Excel-Makros bis zu Python-Skripten, die um 2 Uhr nachts mit Klebeband zusammengeflickt wurden. In diesem Leitfaden zeige ich Ihnen, wie Sie mit einem Python-HTML-Parser echte Daten scrapen (ja, wir holen uns gemeinsam IMDb-Filmbewertungen), und ich erkläre Ihnen außerdem, warum es 2026 einen besseren Weg gibt – KI-gestützte Tools wie Thunderbit, mit denen Sie den Code überspringen und direkt zu den Erkenntnissen kommen.

Was ist ein HTML-Parser und warum sollte man in Python einen verwenden?

Fangen wir ganz vorne an: Was macht ein HTML-Parser eigentlich? Stellen Sie ihn sich als Ihren persönlichen Bibliothekar fürs Web vor. Er liest den unübersichtlichen HTML-Code hinter einer Webseite und ordnet ihn in eine saubere, baumartige Struktur. So können Sie genau die Daten herausziehen, die Sie brauchen – Titel, Preise, Links – ohne sich in einem Meer aus spitzen Klammern und divs zu verlieren.

Python ist dafür die erste Wahl – und das aus gutem Grund. Die Sprache ist gut lesbar, einsteigerfreundlich und verfügt über ein riesiges Ökosystem an Bibliotheken für Web-Scraping und Parsing. Tatsächlich ist Python mit Abstand die beliebteste Sprache für Web Scraping, dank der sanften Lernkurve und der starken Community-Unterstützung.

Die wichtigsten Python-HTML-Parser im Überblick

Das sind die Hauptkandidaten, auf die Sie beim HTML-Parsing in Python stoßen werden:

  • BeautifulSoup: Der Klassiker und die einsteigerfreundliche Wahl. Wird weiterhin aktiv gepflegt — beautifulsoup4 4.14.3 wurde Ende 2025 auf PyPI veröffentlicht — Sie lernen hier also keine veraltete Bibliothek.
  • lxml: Schnell und leistungsstark, mit erweiterten Abfragen.
  • html5lib: Extrem tolerant gegenüber unsauberem HTML, genau wie Ihr Browser.
  • PyQuery: Ermöglicht jQuery-ähnliche Selektoren in Python.
  • HTMLParser: Der eingebaute Parser von Python – immer da, aber eher minimalistisch.

Jede dieser Lösungen hat ihre Eigenheiten, aber alle helfen Ihnen dabei, rohes HTML in strukturierte Daten zu verwandeln.

Wichtige Anwendungsfälle: Wie Unternehmen von Python-HTML-Parsern profitieren

Die Extraktion von Web-Daten ist längst nicht mehr nur etwas für Techies oder Data Scientists. Sie ist zu einer zentralen Geschäftsaktivität geworden, besonders in Vertrieb und Operations. Darum geht es:

Anwendungsfall (Branche)Typischer extrahierter DatentypGeschäftlicher Nutzen
Preisüberwachung (Einzelhandel)Konkurrenzpreise, LagerbeständeDynamische Preisgestaltung, bessere Margen (Quelle)
Produktintelligenz für WettbewerberAngebote, Bewertungen, VerfügbarkeitLücken erkennen, Leads generieren (Quelle)
Lead-Generierung (B2B-Vertrieb)Firmennamen, E-Mails, KontakteAutomatisierte Neukundenansprache, wachsender Vertriebstrichter (Quelle)
Marktstimmung (Marketing)Social-Media-Beiträge, Bewertungen, RezensionenEchtzeit-Feedback, Trend-Erkennung (Quelle)
Aggregation von ImmobilienangebotenInserate, Preise, MaklerinformationenMarktanalyse, Preisstrategie (Quelle)
Recruiting-IntelligenceKandidatenprofile, GehälterTalentgewinnung, Gehaltsbenchmarking (Quelle)

Kurz gesagt: Wer Daten noch manuell kopiert, verschenkt Zeit und Geld.

Das Python-HTML-Parser-Toolkit im Vergleich: Beliebte Bibliotheken

Jetzt wird’s praktisch. Hier ist ein kurzer Vergleich der beliebtesten Python-HTML-Parser-Bibliotheken, damit Sie das richtige Tool für Ihre Aufgabe auswählen können:

BibliothekEinfachheit der NutzungGeschwindigkeitFlexibilitätWartungsaufwandAm besten geeignet für
BeautifulSoup⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐MittelEinsteiger, unübersichtliches HTML
lxml⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐MittelGeschwindigkeit, XPath, große Dokumente
html5lib⭐⭐⭐⭐⭐⭐⭐⭐GeringBrowserähnliches Parsing, fehlerhaftes HTML
PyQuery⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐MitteljQuery-Fans, CSS-Selektoren
HTMLParser⭐⭐⭐⭐⭐⭐GeringEinfache, eingebaute Aufgaben

BeautifulSoup: Die einsteigerfreundliche Wahl

BeautifulSoup ist beim HTML-Parsing das, was „Hello World“ beim Programmieren ist – der natürliche erste Schritt. Die Syntax ist intuitiv, die Dokumentation stark, und die Bibliothek verzeiht auch hässliches, fehlerhaftes HTML (mehr dazu). Der Nachteil? Sie ist nicht die schnellste, vor allem nicht bei großen oder komplexen Seiten, und unterstützt erweiterte Selektoren wie XPath nicht standardmäßig.

lxml: Schnell und leistungsstark

Wenn Sie Geschwindigkeit brauchen oder XPath-Abfragen verwenden möchten, ist lxml Ihr Freund (Details). Die Bibliothek basiert auf C-Bibliotheken und ist dadurch extrem schnell, kann aber schwieriger zu installieren sein und hat eine steilere Lernkurve.

Weitere Optionen: html5lib, PyQuery und HTMLParser

  • html5lib: Parst HTML genau wie Ihr Browser – ideal für kaputtes oder seltsames Markup, aber langsam (Vergleich).
  • PyQuery: Ermöglicht jQuery-ähnliche Selektoren in Python, was praktisch ist, wenn Sie aus dem Frontend-Bereich kommen (siehe Docs).
  • HTMLParser: Die eingebaute Option von Python – schnell und immer verfügbar, aber nicht ganz so funktionsreich.

Schritt 1: Ihre Python-HTML-Parser-Umgebung einrichten

Bevor Sie irgendetwas parsen können, müssen Sie Ihre Python-Umgebung einrichten. So geht’s:

  1. Python installieren: Laden Sie es von python.org herunter, falls Sie es noch nicht haben.

  2. pip installieren: Kommt normalerweise mit Python 3.4+ mit, Sie können es aber mit pip --version im Terminal prüfen.

  3. Die Bibliotheken installieren (wir verwenden für dieses Tutorial BeautifulSoup und requests):

    pip install beautifulsoup4 requests lxml
    
    • beautifulsoup4 ist der Parser.
    • requests lädt Webseiten herunter.
    • lxml ist ein schneller Parser, den BeautifulSoup im Hintergrund verwenden kann.
  4. Installation überprüfen:

    python -c "import bs4, requests, lxml; print('All good!')"
    

Tipps zur Fehlersuche:

  • Wenn Sie Berechtigungsfehler erhalten, versuchen Sie pip install --user ...
  • Auf Mac/Linux benötigen Sie möglicherweise statt dessen python3 und pip3.
  • Wenn „ModuleNotFoundError“ erscheint, prüfen Sie Schreibweise und Python-Umgebung noch einmal.

Schritt 2: Ihre erste Webseite mit Python parsen

Jetzt geht es ans Eingemachte: Wir scrapen die IMDb Top 250 Filme und holen uns die Filmtitel, Jahre und Bewertungen.

IMDb’s Top 250 movies.png

Die Seite abrufen und parsen

Hier ist ein Skript Schritt für Schritt. Kurzer Hinweis, bevor Sie es kopieren: IMDb hat die Top-250-Seite im Juni 2023 neu gestaltet, sodass die alten Selektoren td.titleColumn / td.ratingColumn, die Sie in älteren Tutorials noch sehen, inzwischen nichts mehr finden. Das aktuelle Markup verwendet ipc--Präfixe, die vom Komponenten-System generiert werden, und IMDb hat die Seite seitdem noch einige weitere Male umgebaut (einschließlich Mitte 2025), also planen Sie ein, jedes Mal mit den DevTools neu hineinzuschauen, wenn Sie zu diesem Beispiel zurückkehren.

import requests
from bs4 import BeautifulSoup

url = "https://www.imdb.com/chart/top/"
headers = {"User-Agent": "Mozilla/5.0"}  # IMDb liefert ohne echten UA nur spärliches Markup aus
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")

# Jede Zeile ist ein Listenelement im Chart-Container
rows = soup.select("li.ipc-metadata-list-summary-item")

for i, row in enumerate(rows[:3], start=1):
    title_el  = row.select_one("h3.ipc-title__text")
    year_el   = row.select_one("span.cli-title-metadata-item")
    rating_el = row.select_one("span.ipc-rating-star--rating")

    title  = title_el.get_text(strip=True) if title_el else None
    # Der h3-Text kommt als "1. The Shawshank Redemption" zurück — die Rangnummer entfernen
    if title and ". " in title:
        title = title.split(". ", 1)[1]
    year   = year_el.get_text(strip=True) if year_el else None
    rating = rating_el.get_text(strip=True) if rating_el else None

    print(f"{i}. {title} ({year}) -- Rating: {rating}")

Was passiert hier?

  • Wir verwenden requests.get(), um die Seite abzurufen (mit einem realistisch wirkenden User-Agent – IMDb liefert python-requests-Clients manchmal nur ein reduziertes Grundgerüst aus).
  • BeautifulSoup parst das HTML.
  • Wir greifen über li.ipc-metadata-list-summary-item auf jede Filmzeile zu und ziehen dann mit select_one() Titel (h3.ipc-title__text), Jahr (span.cli-title-metadata-item) und Bewertung (span.ipc-rating-star--rating) heraus.
  • Wir extrahieren den Text für Titel, Jahr und Bewertung und entfernen die führende Rangnummer ("1. "), die IMDb in den Titeltext einbettet.

Wenn Sie etwas Dauerhaftes wollen, statt alle paar Monate wechselnden Klassennamen hinterherzulaufen, liefert IMDb auf derselben Seite auch einen <script type="application/ld+json">-Block mit denselben Daten in strukturierter Form aus – Sie können ihn mit json.loads(soup.find("script", type="application/ld+json").string) parsen und das Array itemListElement durchlaufen. Das wäre mein Ansatz in der Produktion; die CSS-Selektor-Variante oben ist leichter zu erklären, aber deutlich fragiler.

Ausgabe:

1. The Shawshank Redemption (1994) -- Rating: 9.3
2. The Godfather (1972) -- Rating: 9.2
3. The Dark Knight (2008) -- Rating: 9.0

Daten extrahieren: Titel, Bewertungen und mehr finden

Woher wusste ich, welche Tags und Klassen ich verwenden musste? Ich habe mir das HTML der IMDb-Seite angesehen (Rechtsklick > Element untersuchen in Ihrem Browser). Achten Sie auf Muster – hier sitzt jede Filmzeile in einem <li class="ipc-metadata-list-summary-item">, der Titel steckt unter <h3 class="ipc-title__text"> und die Bewertung unter <span class="ipc-rating-star--rating">. Ein wichtiger Hinweis: IMDb hat dieses Markup schon mehr als einmal umgestellt (das td.titleColumn-Layout, das Sie noch in älteren Anleitungen finden, funktioniert seit dem Redesign im Juni 2023 nicht mehr), also behandeln Sie die exakten Klassennamen immer nur als Beispiel und schauen Sie vor dem Ausführen des Skripts noch einmal nach.

Profi-Tipp: Wenn Sie eine andere Website scrapen, beginnen Sie immer damit, die HTML-Struktur zu inspizieren und eindeutige Klassennamen oder Tags zu identifizieren.

Ihre Ergebnisse speichern und exportieren

Speichern wir unsere Daten in einer CSV-Datei:

import csv

movies = []
for i in range(len(title_cells)):
    title_cell = title_cells[i]
    rating_cell = rating_cells[i]
    title = title_cell.a.text
    year = title_cell.span.text.strip("()")
    rating = rating_cell.strong.text if rating_cell.strong else rating_cell.text
    movies.append([title, year, rating])

with open('imdb_top250.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['Title', 'Year', 'Rating'])
    writer.writerows(movies)

Bereinigungstipps:

  • Verwenden Sie .strip(), um Leerzeichen zu entfernen.
  • Behandeln Sie fehlende Daten mit if-Prüfungen.
  • Für den Excel-Export können Sie die CSV in Excel öffnen oder mit pandas .xlsx-Dateien schreiben.

Schritt 3: HTML-Änderungen und Wartungsprobleme bewältigen

Jetzt wird es ernst. Websites ändern ihr Layout gern – manchmal wirkt es, als täten sie es nur, um Scraper auf Trab zu halten. Wenn IMDb class="titleColumn" in class="movieTitle" ändert, gibt Ihr Skript plötzlich leere Ergebnisse zurück. Schon erlebt, schon debuggt.

Wenn Skripte kaputtgehen: Probleme aus der Praxis

Häufige Probleme:

  • Selektoren nicht gefunden: Ihr Code findet das angegebene Tag bzw. die Klasse nicht.
  • Leere Ergebnisse: Die Seitenstruktur hat sich geändert, oder Inhalte werden jetzt per JavaScript geladen.
  • HTTP-Fehler: Die Seite hat Anti-Bot-Maßnahmen eingeführt.

Schritte zur Fehlersuche:

  1. Prüfen Sie, ob das HTML, das Sie parsen, mit dem übereinstimmt, was Sie im Browser sehen.
  2. Aktualisieren Sie Ihre Selektoren, damit sie zur neuen Struktur passen.
  3. Wenn Inhalte dynamisch geladen werden, müssen Sie vielleicht auf ein Browser-Automatisierungstool wie Selenium umsteigen oder einen API-Endpunkt finden.

Das eigentliche Problem? Wenn Sie 10, 50 oder 500 verschiedene Websites scrapen, verbringen Sie möglicherweise mehr Zeit mit dem Reparieren von Skripten als mit der eigentlichen Datenanalyse (siehe Entwicklerberichte).

Schritt 4: Skalieren – die versteckten Kosten des manuellen Python-HTML-Parsens

Angenommen, Sie möchten nicht nur IMDb scrapen, sondern auch Amazon, Zillow, LinkedIn und ein Dutzend weitere Websites. Jede einzelne braucht ihr eigenes Skript. Und jedes Mal, wenn eine Seite sich ändert, sitzen Sie wieder im Code-Editor.

Die versteckten Kosten:

Für nicht-technische Teams wird das schnell untragbar. Es ist, als würde man ein Team von Praktikanten einstellen, die den ganzen Tag Daten kopieren und einfügen – nur dass die Praktikanten Python-Skripte sind und sich jedes Mal krankmelden, wenn sich eine Website ändert.

Eine kurze Anmerkung zu KI-Coding-Agenten

Bevor wir zu No-Code-Tools kommen, lohnt sich ein Blick auf einen Mittelweg, den es zur Zeit der meisten „Lernen Sie BeautifulSoup“-Tutorials noch kaum gab: KI-Coding-Agenten. Tools wie Claude Code oder Cursor setzen eine englische Beschreibung („hole die Top 250 von IMDb, schreibe Titel / Jahr / Bewertung in eine CSV“) gern direkt in ein funktionierendes requests-plus-BeautifulSoup-Skript um – inklusive der Art von Selektor-Bereinigung, die wir gerade noch manuell gemacht haben. Für Browser-Workflows in natürlicher Sprache – Anmelden, Paginierung, Cookie-Banner – kann eine Bibliothek wie Browser Use einen Headless Browser direkt per Prompt steuern.

Ganz verschwinden die schwierigen Teile dadurch aber nicht. Rate Limits, robots.txt, Login-Walls und Anti-Bot-Abwehr bleiben Ihr Problem, und wenn ein Selektor stillschweigend kaputtgeht (wie bei IMDb), müssen Sie trotzdem erkennen, was der Agent erzeugt hat, und es korrigieren. Selbst mit einem Agenten im Loop ist also das Verständnis des HTML-Parser-Workflows aus diesem Tutorial das, was Ihnen hilft, die Ausgabe zu debuggen, statt nur auf leere Listen zu starren.

Jenseits von Python-HTML-Parsern: Lernen Sie Thunderbit kennen, die KI-gestützte Alternative

Jetzt zum interessanten Teil. Was wäre, wenn Sie den Code überspringen, die Wartung überspringen und einfach die Daten bekommen könnten – ganz gleich, wie sich die Website verändert?

Genau das haben wir mit Thunderbit gebaut. Es ist eine Chrome-Erweiterung für KI-Web-Scraping, mit der Sie strukturierte Daten von jeder Website in zwei Klicks extrahieren können. Kein Python, keine Skripte, kein Kopfzerbrechen.

Python-HTML-Parser vs. Thunderbit: Direktvergleich

AspektPython-HTML-ParserThunderbit (Preise ansehen)
EinrichtungszeitHoch (installieren, programmieren, debuggen)Gering (Erweiterung installieren, klicken)
BenutzerfreundlichkeitErfordert ProgrammierungKein Code — zeigen und klicken
WartungHoch (Skripte brechen häufig)Gering (KI passt sich automatisch an)
SkalierbarkeitKomplex (Skripte, Proxys, Infrastruktur)Integriert (Cloud-Scraping, Batch-Jobs)
DatenanreicherungManuell (mehr Code schreiben)Integriert (Kennzeichnung, Bereinigung, Übersetzung, Unterseiten)

Warum etwas bauen, wenn Sie das Problem mit KI lösen können?

Warum KI für die Extraktion von Web-Daten wählen?

Der KI-Agent von Thunderbit liest die Seite, erkennt die Struktur und passt sich an, wenn sich etwas ändert. Es ist, als hätten Sie einen Super-Praktikanten, der nie schläft und sich nie über wechselnde Klassennamen beschwert.

ai-agent-web-scraping-features.png

  • Kein Code erforderlich: Jeder kann es verwenden – Vertrieb, Operations, Marketing, was auch immer.
  • Batch-Scraping: Über 10.000 Seiten scrapen in der Zeit, die Sie brauchen würden, um ein einziges Python-Skript zu debuggen.
  • Keine Wartung: Die KI übernimmt Layout-Änderungen, Paginierung, Unterseiten und mehr.
  • Datenanreicherung: Bereinigen, kennzeichnen, übersetzen und zusammenfassen, während Sie die Daten erfassen.

Die Kehrseite des gerade besprochenen BeautifulSoup-Workflows ist genau die Art von Fragilität, die wir oben bei den IMDb-Selektoren gesehen haben – wenn die Seite umgebaut wird, liefert das Skript stillschweigend leere Ergebnisse, und Sie verbringen den Nachmittag in den DevTools statt mit den Daten. Ein No-Code-KI-Scraper versteckt diesen Schritt hinter seiner eigenen Inferenzschicht; das ist ein echter Kompromiss (Sie vertrauen darauf, dass die Extraktion eines anderen korrekt ist), kein Wundermittel.

Schritt für Schritt: IMDb-Filmbewertungen mit Thunderbit scrapen

Schauen wir uns an, wie Thunderbit dieselbe IMDb-Aufgabe löst:

  1. Installieren Sie die Thunderbit Chrome-Erweiterung.
  2. Öffnen Sie die IMDb Top 250-Seite.
  3. Klicken Sie auf das Thunderbit-Symbol.
  4. Klicken Sie auf „KI-Felder vorschlagen“. Thunderbit liest die Seite und empfiehlt Spalten (Titel, Jahr, Bewertung).
  5. Prüfen oder passen Sie die Spalten bei Bedarf an.
  6. Klicken Sie auf „Scrapen“. Thunderbit extrahiert sofort alle 250 Zeilen.
  7. Exportieren Sie nach Excel, Google Sheets, Notion oder CSV – ganz wie Sie möchten.

Das war’s. Kein Code, kein Debugging, kein „Warum ist diese Liste leer?“

Sie möchten sehen, wie es funktioniert? Schauen Sie sich den Thunderbit-YouTube-Kanal für Anleitungen an oder lesen Sie unseren Schritt-für-Schritt-Leitfaden zum Scrapen von Amazon für ein weiteres Praxisbeispiel.

Fazit: Das richtige Tool für Ihre Web-Datenanforderungen wählen

Python-HTML-Parser wie BeautifulSoup und lxml sind leistungsstark, flexibel und kostenlos. Sie sind ideal für Entwickler, die volle Kontrolle wollen und bereit sind, selbst Hand anzulegen. Aber sie bringen eine steile Lernkurve, laufende Wartung und versteckte Kosten mit sich – vor allem, wenn Ihre Scraping-Anforderungen wachsen.

Für Business-User, Vertriebsteams und alle, die einfach nur die Daten wollen und nicht den Code, sind KI-gestützte Tools wie Thunderbit eine echte Erleichterung. Sie ermöglichen es, Web-Daten in großem Maßstab zu extrahieren, zu bereinigen und anzureichern – ganz ohne Programmierung und ohne Wartungsaufwand.

Mein Rat? Nutzen Sie Python, wenn Sie Skripte lieben und maximale Anpassung brauchen. Aber wenn Ihnen Ihre Zeit wichtig ist (und Ihre Nerven auch), probieren Sie Thunderbit aus. Warum Skripte bauen und betreuen, wenn KI die schwere Arbeit übernehmen kann?

Sie möchten mehr über Web Scraping, Datenextraktion und KI-Automatisierung erfahren? Stöbern Sie in weiteren Tutorials im Thunderbit-Blog, zum Beispiel Wie man Website-Daten mit KI in Excel überführt oder Die besten Web-Scraping-Tools und -Software 2025.

Shuai Guan
Shuai Guan
CEO bei Thunderbit | Experte für KI-gestützte Datenautomatisierung Shuai Guan ist CEO von Thunderbit und Absolvent der University of Michigan im Bereich Engineering. Mit fast zehn Jahren Erfahrung in Tech und SaaS-Architektur hat er sich darauf spezialisiert, komplexe KI-Modelle in praxisnahe No-Code-Tools zur Datenextraktion zu verwandeln. In diesem Blog teilt er ungefilterte, in der Praxis bewährte Einblicke in Web-Scraping- und Automatisierungsstrategien, damit Sie intelligentere, datengetriebene Workflows aufbauen können. Wenn er gerade keine Datenprozesse optimiert, widmet er dieselbe Liebe zum Detail seiner Leidenschaft für die Fotografie.
Topics
Html ParserPython Html ParserPython Parse Html

Thunderbit ausprobieren

Leads und andere Daten in nur 2 Klicks extrahieren. Mit KI unterstützt.

Thunderbit holen Es ist kostenlos
Daten mit KI extrahieren
Daten einfach zu Google Sheets, Airtable oder Notion übertragen
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week