Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie mit BeautifulSoup in Python Daten aus einer HTML-Tabelle extrahieren und dabei insbesondere Komplexitäten wie zusätzliche Zeilen und Eingabeelemente bewältigen?

Wie können Sie mit BeautifulSoup in Python Daten aus einer HTML-Tabelle extrahieren und dabei insbesondere Komplexitäten wie zusätzliche Zeilen und Eingabeelemente bewältigen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 23:08:31310Durchsuche

How can you extract data from an HTML table using BeautifulSoup in Python, specifically handling complexities such as extra rows and input elements?

Daten aus einer Tabelle mit BeautifulSoup in Python extrahieren

Beim Parsen von HTML-Dokumenten ist die Fähigkeit, Daten aus Tabellen zu extrahieren, eine häufige Anforderung. BeautifulSoup, eine beliebte Python-Bibliothek für Web Scraping, bietet eine leistungsstarke Möglichkeit, HTML zu analysieren und auf seine Inhalte zuzugreifen.

Parsen einer Tabelle mit BeautifulSoup

Zur Veranschaulichung des Prozesses von Betrachten wir beim Parsen einer Tabelle mit BeautifulSoup das Beispiel des „NYC Parking Ticket Parser“. Die HTML-Antwort für diese Seite ist recht komplex und das Ziel besteht darin, die Daten aus der Einzelpostentabelle zu extrahieren, die Informationen zu jedem Ticket enthält.

Um dies zu erreichen, müssen wir zunächst die Tabelle im HTML identifizieren Antwort unter Verwendung seiner eindeutigen Klasse:

<code class="python">table = soup.find("table", { "class" : "lineItemsTable" })</code>

Sobald die Tabelle gefunden ist, können wir durch die Zeilen iterieren, um die Daten zu extrahieren:

<code class="python">for row in table.findAll("tr"):
    cells = row.findAll("td")
    print cells</code>

Dieser Ansatz würde jedoch nur den HTML-Code bereitstellen Elemente für jede Zeile in der Tabelle. Um den eigentlichen Textinhalt zu erhalten, müssen wir den Text aus jeder Zelle extrahieren:

<code class="python">data = []
for row in table.findAll("tr"):
    cols = row.findAll("td")
    cols = [ele.text.strip() for ele in cols]
    data.append([ele for ele in cols if ele])</code>

Dieser Code durchläuft die Tabellenzeilen, extrahiert den Text aus den Zellen und entfernt alle führenden oder nachfolgenden Leerzeichen. Das Ergebnis ist eine Liste von Listen, wobei jede innere Liste eine Zeile in der Tabelle darstellt.

Umgang mit Komplexitäten

Im bereitgestellten Beispiel die letzte Zeile der Tabelle enthält den Zahlungsbetrag, der nicht Teil der Tabellendaten ist. Um dies zu bewältigen, können wir Zeilen mit weniger als einer bestimmten Anzahl an Elementen herausfiltern:

<code class="python">data = [row for row in data if len(row) >= 7]</code>

Zusätzlich enthält die letzte Spalte jeder Zeile ein Eingabetextfeld. Wir können damit umgehen, indem wir den Text vor dem Eingabeelement extrahieren:

<code class="python">data = [[col.split()[0] if col.find("input") else col for col in row] for row in data]</code>

Fazit

Mit diesen Modifikationen können Sie die Daten effektiv aus der Einzelpostentabelle extrahieren mit BeautifulSoup in Python. Denken Sie daran, den Code an Ihre spezifischen Anforderungen anzupassen und eventuell auftretende zusätzliche Komplexitäten zu berücksichtigen.

Das obige ist der detaillierte Inhalt vonWie können Sie mit BeautifulSoup in Python Daten aus einer HTML-Tabelle extrahieren und dabei insbesondere Komplexitäten wie zusätzliche Zeilen und Eingabeelemente bewältigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn