WMP Sites

Pandas read_html: HTML-Tabellen in Python zuverlässig extrahieren

Lukas Fuchs vor 1 Monat Datenbanken 3 Min. Lesezeit

Wenn du HTML-Tabellen schnell in DataFrames ziehen willst, ist pandas read_html oft der schnellste Weg. Ich zeige dir, wie ich damit arbeite, wo die Stolperfallen liegen und wie du saubere Ergebnisse bekommst.

pandas read_html extrahieren von html tabellen in python

Wenn ich HTML-Tabellen in Python auslesen will, starte ich fast immer mit pandas.read_html(). Warum? Weil es schnell ist, wenig Code braucht und in vielen Fällen sofort funktioniert. Aber: Es ist nicht magisch. Wenn du die Methode falsch einsetzt, bekommst du Müll, mehrere Tabellen auf einmal oder kaputte Spalten. Ich zeige dir, wie ich pandas read_html extrahieren von html tabellen in python praktisch nutze, welche Fehler ich vermeide und wie du aus rohem HTML saubere Daten machst.

Was macht pandas.read_html überhaupt?

pandas.read_html() liest alle erkennbaren HTML-Tabellen aus einer Webseite, einem lokalen HTML-File oder einem HTML-String und gibt sie als Liste von DataFrames zurück. Das ist wichtig: nicht ein DataFrame, sondern eine Liste.

Ich nutze das vor allem, wenn eine Seite schon eine Tabelle im HTML hat und ich keine unnötige Scraping-Logik bauen will. Wenn die Daten bereits sauber als Tabelle vorliegen, ist das oft der kürzeste Weg.

pandas read_html extrahieren von html tabellen in python: das Grundprinzip

Die einfachste Variante sieht so aus:

import pandas as pd

url = "https://example.com"
tables = pd.read_html(url)

print(len(tables))
print(tables[0].head())

Das Ergebnis:

  • tables ist eine Liste
  • jede Tabelle ist ein DataFrame
  • mit tables[0] greifst du auf die erste Tabelle zu

Wenn du nur eine konkrete Tabelle willst, musst du sie finden. Sonst arbeitest du schnell mit der falschen Tabelle weiter. Genau da machen viele Anfänger Fehler.

Die häufigsten Wege, eine HTML-Tabelle zu laden

1. Direkt von einer URL

import pandas as pd

tables = pd.read_html("https://www.w3schools.com/html/html_tables.asp")
print(tables[0])

Das ist der schnellste Start. Für Tests und einfache Seiten ist das ideal.

2. Aus einer lokalen HTML-Datei

import pandas as pd

tables = pd.read_html("seite.html")
print(tables[0])

Perfekt, wenn du HTML-Dateien lokal speicherst oder mit exportierten Seiten arbeitest.

3. Aus einem HTML-String

import pandas as pd

html = """
NameWert
Alice10
""" tables = pd.read_html(html) print(tables[0])

Das ist praktisch für dynamisch erzeugtes HTML oder Tests.

Wie ich die richtige Tabelle finde

Wenn eine Seite mehrere Tabellen hat, musst du gezielt filtern. Sonst erwischst du die falsche Tabelle und verlierst Zeit.

Mein Ansatz:

  • Alle Tabellen laden und kurz anschauen
  • Mit shape, head() und Spaltennamen prüfen
  • Die Tabelle über Inhalt, Position oder Struktur auswählen
import pandas as pd

tables = pd.read_html("https://www.w3schools.com/html/html_tables.asp")

for i, df in enumerate(tables):
    print(f"Tabelle {i}")
    print(df.head())
    print(df.columns)
    print("---")

Wenn du die Tabelle kennst, kannst du oft mit Parametern wie match oder attrs arbeiten. Das spart Zeit und reduziert Fehler.

Wichtige Parameter für pandas.read_html

Wenn ich effizient arbeiten will, achte ich auf diese Parameter:

  • match: sucht Tabellen mit einem bestimmten Text
  • attrs: filtert nach HTML-Attributen wie id oder class
  • header: definiert die Kopfzeile
  • index_col: setzt eine Spalte als Index
  • skiprows: überspringt Zeilen am Anfang
import pandas as pd

tables = pd.read_html(
    "https://example.com",
    match="Umsatz",
    attrs={"id": "sales-table"}
)

Wichtig: Nicht jeder Parameter funktioniert auf jeder Seite gleich gut. HTML ist oft messy. Du musst testen.

Typische Probleme und wie ich sie löse

Problem 1: Es werden mehrere Tabellen gefunden

Dann ist deine Seite wahrscheinlich voller Tabellen oder Tabellen-ähnlicher Elemente. Ich filtere dann gezielt mit match oder attrs.

Problem 2: Die Spalten sehen falsch aus

Dann liegt es oft an verschachtelten Headern oder leeren Zellen. Hier hilft es, die Tabelle zu bereinigen:

  • unnötige Zeilen entfernen
  • Spaltennamen umbenennen
  • Datentypen konvertieren
  • Leerwerte behandeln

Problem 3: Die Seite lädt Inhalte per JavaScript

Dann kann read_html nur das lesen, was im HTML schon drin ist. Wenn die Tabelle erst im Browser erzeugt wird, reicht das nicht. Dann brauchst du einen Browser-Automation-Ansatz wie Selenium oder du musst die API hinter der Seite finden.

Problem 4: SSL- oder Netzwerkfehler

Bei manchen Seiten blocken Zertifikate oder Serveranfragen. In solchen Fällen lade ich die Seite zuerst mit requests und gebe den HTML-Text an Pandas weiter.

import requests
import pandas as pd

url = "https://example.com"
html = requests.get(url).text
tables = pd.read_html(html)

Die offizielle Doku zu read_html findest du bei Pandas.

So mache ich aus einer HTML-Tabelle saubere Daten

Die Extraktion ist nur Schritt eins. Der echte Wert kommt erst danach. Ich will keine Tabelle, ich will brauchbare Daten.

  • Spaltennamen prüfen und ggf. vereinheitlichen
  • Datentypen konvertieren, z. B. Zahlen oder Datumswerte
  • Duplikate entfernen
  • Leerzeilen löschen
  • Ungültige Werte behandeln
df = tables[0]
df.columns = ["name", "wert"]
df["wert"] = pd.to_numeric(df["wert"], errors="coerce")
df = df.dropna()

Das ist simpel, aber genau da liegt der Hebel. Saubere Daten sparen dir später massiv Zeit.

Wann ich read_html nicht benutze

Ich nutze read_html nicht blind. Wenn die Seite nur halbwegs tabellarisch aussieht, ist das keine Garantie für gute Ergebnisse.

Ich nehme einen anderen Weg, wenn:

  • die Daten per JavaScript nachgeladen werden
  • die Tabelle extrem verschachtelt ist
  • ich nur einzelne Zellen brauche
  • die Struktur stark unregelmäßig ist

Dann ist ein gezieltes Parsen mit BeautifulSoup oder ein API-Call oft besser. Die BeautifulSoup-Doku findest du hier: Beautiful Soup Documentation.

Mein kurzer Workflow für pandas read_html extrahieren von html tabellen in python

  1. Seite oder HTML laden
  2. Alle Tabellen mit read_html extrahieren
  3. Die richtige Tabelle identifizieren
  4. Spalten und Datentypen bereinigen
  5. Ergebnis exportieren oder weiterverarbeiten

Wenn ich das sauber mache, brauche ich oft nur wenige Zeilen Code, um aus HTML echte Daten zu machen. Genau deshalb mag ich diesen Ansatz: schnell, direkt, effektiv.

Fazit: pandas read_html spart Zeit, wenn du es richtig einsetzt

pandas.read_html() ist eines der nützlichsten Tools, wenn du HTML-Tabellen in Python extrahieren willst. Es ist schnell, leicht zu lernen und perfekt für viele Standardfälle. Aber du musst wissen, wie du die richtige Tabelle findest, wie du sie bereinigst und wann du auf andere Tools ausweichen solltest.

Wenn du den Prozess beherrschst, kannst du HTML-Tabellen in Minuten statt Stunden in brauchbare Daten verwandeln. Genau darum geht es bei pandas read_html extrahieren von html tabellen in python.

Weitere Beiträge

Folge uns

Neue Beiträge

DevOps & Deployment

Linux Download: Die ultimative Anleitung für Neulinge und Profis

AUTOR • Aug 10, 2026
DevOps & Deployment

iptables: Die Firewall ihrer Linux-Welt – einfach, sicher, effektiv

AUTOR • Aug 10, 2026
DevOps & Deployment

Linux Dateisystem: Eine tiefgreifende Erkundung für mehr Kontrolle und Verständnis

AUTOR • Aug 10, 2026
DevOps & Deployment

Linux Foundation Zertifizierung: Karrierechancen und Vorteile für deinen IT-Job

AUTOR • Aug 10, 2026
DevOps & Deployment

Diff, ein geteilter Unterschied: Was der Begriff bedeutet und wann du ihn brauchst

AUTOR • Aug 10, 2026
DevOps & Deployment

tar.gz: Was Sie über das Komprimierungsformat wissen sollten

AUTOR • Aug 10, 2026
DevOps & Deployment

Die besten Linux-Bücher: Ein umfassender Leitfaden für Anfänger und Fortgeschrittene

AUTOR • Aug 10, 2026
DevOps & Deployment

Nautilus Linux: eine tiefgruendige erkundung des benutzerfreundlichen Linux-Betriebssystems

AUTOR • Aug 10, 2026
API & Webservices

Sprüche für Weihnachtskarten Familie: Die besten kurzen, warmen und echten Worte

AUTOR • Aug 10, 2026
Backend

Autokennzeichen Oehr und HR: Geschichte, Bedeutung und was wirklich dahinter steckt

AUTOR • Aug 09, 2026
Frontend

Was ist ein Seitenumbruch? Einfach erklärt für Word, PDF und Web

AUTOR • Aug 09, 2026
JavaScript

D Programming Language: So stark ist D für schnelle, sichere Software

AUTOR • Aug 08, 2026
Backend

STD Signal: Was es bedeutet, warum es wichtig ist und wie du schneller erkennst, was wirklich los ist

AUTOR • Aug 08, 2026
Datenbanken

Energieflussdiagramm erstellen: So visualisierst du Energieflüsse klar, schnell und verständlich

AUTOR • Aug 08, 2026
API & Webservices

Geschenke zum Geburtstag Männer: 25 Ideen, die wirklich ankommen

AUTOR • Aug 08, 2026
JavaScript

Zeichen größer machen: So vergrößerst du Zeichen schnell und sauber

AUTOR • Aug 08, 2026
Frontend

Fläche und Umfang geometrischer Figuren: So berechnest du Formen schnell und sicher

AUTOR • Aug 08, 2026
API & Webservices

m2 in ha umrechnen: So wandelst du Quadratmeter in Hektar schnell und sicher um

AUTOR • Aug 07, 2026
JavaScript

kg in g umrechnen: Die schnelle Formel, Beispiele und Fehler, die du vermeiden musst

AUTOR • Aug 07, 2026
Frontend

Sprüche fürs Gästebuch: 101 kurze, schöne und persönliche Ideen

AUTOR • Aug 07, 2026

Beliebte Beiträge

Frontend

Hochzeitskarte Text für beste Freunde: Herzliche Ideen und Beispiele

AUTOR • May 12, 2025
Frontend

Einzigartige Wünsche zur Jugendweihe: Kreative Ideen für diesen besonderen Tag

AUTOR • May 12, 2025
API & Webservices

Persönliche Glückwünsche zum Geburtstag: Kreative Ideen und Tipps

AUTOR • May 12, 2025
Frontend

Herzliche Glückwünsche zur Geburt: Die besten Ideen für Karten und Botschaften

AUTOR • May 12, 2025
Frontend

Umfang und Flächeninhalt des Kreises: Formel und Anwendungen

AUTOR • May 05, 2025
Datenbanken

Die Epoche Barock: Merkmale, Einflüsse und Bedeutung

AUTOR • May 05, 2025
Frontend

10 Merkmale einer Kurzgeschichte: Ein Leitfaden für Leser und Schriftsteller

AUTOR • May 05, 2025
DevOps & Deployment

Bash Script Beispiel: Pragmatische Anwendungen für Ihre Shell-Skripte

AUTOR • Apr 12, 2025
Datenbanken

Kaufvertragsstörungen Beispiele: Häufige Probleme im Kaufvertrag

AUTOR • Apr 04, 2025
Frontend

Abbildungs-verzeichnis in Word erstellen: Detaillierte Anleitung und Tipps

AUTOR • Sep 10, 2024
Frontend

Effizientes Nummerieren von Überschriften in Word

AUTOR • Sep 10, 2024
Frontend

Autokennzeichen Mod: Alles, was Sie über die neuesten Trends bei der Nummernschild-Modifikation wissen müssen

AUTOR • Jun 18, 2024
Frontend

Autokennzeichen LS: Bedeutung und Hintergrundinformationen

AUTOR • Jun 18, 2024
Frontend

Autokennzeichen NOAA: Was es bedeutet und wer es benötigt

AUTOR • Jun 18, 2024
Frontend

Kennzeichen BW1: Bedeutung, Herkunft und Verwendung

AUTOR • Apr 07, 2025
Frontend

Erstelle benutzerdefinierte Google-Symbole mithilfe von SVG

AUTOR • May 09, 2024
Frontend

Thunderbird-Symbol: Bedeutung, Verwendung und Personalisierung

AUTOR • May 09, 2024
Frontend

Besondere Sprüche zur Jugendweihe Karte: Kreative Ideen für einen unvergesslichen Tag

AUTOR • May 12, 2025
Frontend

Einzigartige Glückwünsche zur Vermählung: So gestalten Sie Ihre Botschaft unvergesslich

AUTOR • May 12, 2025
Frontend

Kreative Hochzeitsglückwünsche: Textbeispiele für jeden Anlass

AUTOR • May 12, 2025