Finden Sie heraus, wie man HTML-Tabellen mit Python scrapen kann

Andrei Ogiolan am 11. April 2023

blog-image

Einführung

Web Scraping ist ein leistungsfähiges Tool, mit dem Sie Daten aus Websites extrahieren und für verschiedene Zwecke wie Data Mining, Datenanalyse und maschinelles Lernen verwenden können. Eine häufige Aufgabe beim Web Scraping ist das Extrahieren von Daten aus HTML-Tabellen, die auf einer Vielzahl von Websites zu finden sind und zur Darstellung von Daten in einem strukturierten, tabellarischen Format verwendet werden. In diesem Artikel lernen wir, wie man mit Python Daten aus HTML-Tabellen ausliest und in einem Format speichert, mit dem man leicht arbeiten und analysieren kann.

Am Ende dieses Artikels werden Sie über die Fähigkeiten und das Wissen verfügen, um einen eigenen Web Scraper zu erstellen, der Daten aus HTML-Tabellen extrahieren und für eine Vielzahl von Zwecken nutzen kann. Ganz gleich, ob Sie ein Datenwissenschaftler sind, der Daten für sein nächstes Projekt sammeln möchte, ein Geschäftsinhaber, der Daten für die Marktforschung sammeln möchte, oder ein Entwickler, der sein eigenes Web-Scraping-Tool erstellen möchte, dieser Artikel ist eine wertvolle Ressource für den Einstieg in das HTML-Tabellen-Scraping mit Python.

Was sind HTML-Tabellen?

HTML tables are a type of element in HTML (Hypertext Markup Language) that is used to represent tabular data on a web page. An HTML table consists of rows and columns of cells, which can contain text, images, or other HTML elements. HTML tables are created using the table element, and are structured using the ‘<tr>’ (table row) ,‘<td>’ (table cell), ‘<th>’ (table header), ‘<caption>’ , ‘<col>’, ‘<colgroup>’, ‘<tbody>’ (table body), ‘<thead>’ (table head) and ‘<tfoot>’ (table foot) elements. Now let’s go through each one and get in more detail:

  • table-Element: Definiert den Anfang und das Ende einer HTML-Tabelle.
  • tr (Tabellenzeile) Element: Definiert eine Zeile in einer HTML-Tabelle.
  • td (Tabellenzelle) Element: Definiert eine Zelle in einer HTML-Tabelle.
  • th (Tabellenkopf) Element: Definiert eine Kopfzelle in einer HTML-Tabelle. Kopfzellen werden standardmäßig fett und zentriert dargestellt und dienen zur Kennzeichnung der Zeilen oder Spalten der Tabelle.
  • Beschriftungselement: Legt eine Beschriftung oder einen Titel für eine HTML-Tabelle fest. Die Beschriftung wird normalerweise über oder unter der Tabelle angezeigt.
  • col und colgroup Elemente: Definieren Sie die Eigenschaften der Spalten in einer HTML-Tabelle, z. B. die Breite oder Ausrichtung.
  • tbody-, thead- und tfoot-Elemente: Definieren die Abschnitte body, head bzw. foot einer HTML-Tabelle. Diese Elemente können verwendet werden, um Zeilen zu gruppieren und Stile oder Attribute auf einen bestimmten Abschnitt der Tabelle anzuwenden.

Um dieses Konzept besser zu verstehen, sehen wir uns an, wie eine HTML-Tabelle aussieht:

blog-image

Auf den ersten Blick scheint es eine normale Tabelle zu sein, und wir können keine Struktur mit den oben beschriebenen Elementen erkennen. Das bedeutet nicht, dass sie nicht vorhanden sind, sondern dass der Browser sie bereits für uns geparst hat. Um die HTML-Struktur sehen zu können, müssen Sie einen Schritt tiefer gehen und die Entwicklungswerkzeuge verwenden. Klicken Sie dazu mit der rechten Maustaste auf die Seite, klicken Sie auf inspizieren, klicken Sie auf Element auswählen und klicken Sie auf das Element (in diesem Fall die Tabelle), dessen HTML-Struktur Sie sehen möchten. Nachdem Sie diese Schritte ausgeführt haben, sollten Sie etwas wie dieses sehen:

blog-image

HTML-Tabellen werden in der Regel verwendet, um Daten in einem strukturierten, tabellarischen Format darzustellen, z. B. für die tabellarische Auflistung von Ergebnissen oder die Anzeige des Inhalts einer Datenbank. Sie sind auf einer Vielzahl von Websites zu finden und sind ein wichtiges Element, das beim Scraping von Daten aus dem Web zu berücksichtigen ist.

Einrichten

Bevor wir mit dem Scraping von Daten aus HTML-Tabellen beginnen können, müssen wir unsere Umgebung einrichten und sicherstellen, dass wir alle erforderlichen Tools und Bibliotheken installiert haben. Der erste Schritt besteht darin, sicherzustellen, dass Sie Python auf Ihrem Computer installiert haben. Wenn Sie Python noch nicht installiert haben, können Sie es von der offiziellen Python-Website(https://www.python.org/) herunterladen und den Anweisungen zur Installation folgen.

Als Nächstes müssen wir einige Bibliotheken installieren, die uns beim Scrapen von Daten aus HTML-Tabellen helfen. Einige der beliebtesten Bibliotheken für Web Scraping in Python sind Beautiful Soup, Selenium und Scrapy. In diesem Artikel liegt der Schwerpunkt auf der Verwendung von Beautiful Soup, da es im Vergleich zu den anderen Bibliotheken sehr einfach ist. Beautiful Soup ist eine Bibliothek, die das Parsen von HTML- und XML-Dokumenten erleichtert und sich besonders für die Extraktion von Daten aus Webseiten eignet. Auch wenn dies ausreicht, um die gesuchten HTML-Daten auszulesen, werden sie im HTML-Format für das menschliche Auge nicht allzu gut lesbar sein, so dass Sie die Daten vielleicht noch irgendwie parsen möchten. Dies ist der Moment, in dem die Pandas-Bibliothek ins Spiel kommt.

Pandas ist eine Bibliothek zur Datenanalyse, die Werkzeuge für die Arbeit mit strukturierten Daten, wie z. B. HTML-Tabellen, bereitstellt. Sie können diese Bibliotheken mit dem Pip-Paketmanager installieren, der in Python enthalten ist:

$ pip install beautifulsoup4 pandas

Sobald Sie Python und die erforderlichen Bibliotheken installiert haben, können Sie mit dem Scrapen von Daten aus HTML-Tabellen beginnen. Im nächsten Abschnitt werden wir die Schritte zur Erstellung eines Web Scrapers durchgehen, der Daten aus einer HTML-Tabelle extrahieren und in einem strukturierten Format speichern kann.

Fangen wir an zu kratzen

Nachdem wir nun unsere Umgebung eingerichtet haben und ein grundlegendes Verständnis von HTML-Tabellen haben, können wir mit der Erstellung eines Web Scrapers beginnen, um Daten aus einer HTML-Tabelle zu extrahieren. In diesem Abschnitt werden wir die Schritte zur Erstellung eines einfachen Scrapers durchgehen, der Daten aus einer Tabelle extrahieren und in einem strukturierten Format speichern kann.

Der erste Schritt besteht darin, mit Hilfe der requests-Bibliothek eine HTTP-Anfrage an die Webseite zu senden, die die HTML-Tabelle enthält, die wir auslesen wollen.

Sie können es mit pip installieren, wie jedes andere Python-Paket auch:

$ pip install requests

Diese Bibliothek ermöglicht es uns, den HTML-Inhalt einer Webseite als String abzurufen:

Einfuhrgesuche

url = 'https://www.w3schools.com/html/html_tables.asp'

html = requests.get(url).text

Als nächstes werden wir die BeautifulSoup-Bibliothek verwenden, um den HTML-Inhalt zu analysieren und die Daten aus der Tabelle zu extrahieren. BeautifulSoup bietet eine Vielzahl von Methoden und Attributen, die das Navigieren und Extrahieren von Daten aus einem HTML-Dokument erleichtern. Hier ist ein Beispiel, wie man damit das Tabellenelement findet und die Daten aus den Zellen extrahiert:

soup = BeautifulSoup(html, 'html.parser')

# Das Tabellenelement finden

table = soup.find('table')

# Die Daten aus den Zellen extrahieren

data = []

for row in table.find_all('tr'):

cols = row.find_all('td')

# Extrahieren der Tabellenköpfe

if len(cols) == 0:

cols = row.find_all('th')

cols = [ele.text.strip() for ele in cols]

data.append([ele for ele in cols if ele]) # Leere Werte loswerden

print(data)

Das 2D-Datenarray ist nun mit den Werten der Tabellenzeilen und -spalten gefüllt. Damit es für uns besser lesbar ist, können wir den Inhalt jetzt ganz einfach an einen Pandas Dataframe übergeben:

import pandas as pd

# Holen der Kopfzeilen aus dem Daten-Array

# Es ist wichtig, sie anschließend aus dem Daten-Array zu entfernen, damit sie von Pandas korrekt geparst werden

headers = data.pop(0)

df = pd.DataFrame(data, columns=headers)

print(df)

Sobald Sie die Daten aus der Tabelle extrahiert haben, können Sie sie für eine Vielzahl von Zwecken verwenden, z. B. zur Datenanalyse, für maschinelles Lernen oder zum Speichern in einer Datenbank. Sie können den Code auch so ändern, dass Sie mehrere Tabellen von derselben Webseite oder von mehreren Webseiten abrufen können.

Bitte bedenken Sie, dass nicht alle Websites im Internet so einfach zu scrapen sind. Viele von ihnen haben hochgradige Schutzmaßnahmen implementiert, um Scraping zu verhindern, wie CAPTCHA und das Blockieren von IP-Adressen, aber glücklicherweise gibt es Dienste von Drittanbietern wie WebScrapingAPI , die IP-Rotation und CAPTCHA-Umgehung anbieten und Ihnen ermöglichen, diese Ziele zu scrapen.

Ich hoffe, dass dieser Abschnitt einen hilfreichen Überblick über den Prozess des Scrapens von Daten aus einer HTML-Tabelle mit Python gegeben hat. Im nächsten Abschnitt werden wir einige Möglichkeiten erörtern, wie Sie diesen Prozess verbessern können, und die besten Praktiken für das Web-Scraping.

Fortgeschrittener werden

Der Scraper, den wir im vorigen Abschnitt gebaut haben, ist zwar funktional und kann Daten aus einer HTML-Tabelle extrahieren, aber es gibt eine Reihe von Möglichkeiten, ihn zu verbessern und zu optimieren, um ihn effizienter und effektiver zu machen. Hier sind ein paar Vorschläge:

  • Handhabung der Paginierung: Wenn die HTML-Tabelle, die Sie auslesen wollen, über mehrere Seiten verteilt ist, müssen Sie den Scraper so anpassen, dass er mit Paginierung umgehen kann und Daten von allen Seiten auslesen kann. Dies kann in der Regel durch das Verfolgen von Links oder die Verwendung eines Paginierungssteuerelements, z. B. einer Schaltfläche "Weiter", erfolgen, um zur nächsten Seite mit Daten zu navigieren.
  • Umgang mit AJAX: Wenn die HTML-Tabelle mit AJAX oder JavaScript generiert wird, müssen Sie möglicherweise ein Tool wie Selenium verwenden, um das JavaScript auszuführen und die Daten in die Tabelle zu laden. Selenium ist eine Bibliothek für Web-Tests, die die Interaktion eines Benutzers mit einer Webseite simulieren kann und es Ihnen ermöglicht, dynamisch generierte Daten abzufragen. Eine gute Alternative dazu ist unser Scraper, der die Daten zurückgeben kann, nachdem JavaScript auf der Seite gerendert wurde. Mehr darüber erfahren Sie in unseren Dokumenten.
  • Umgang mit Fehlern: Es ist wichtig, Fehler und Ausnahmen in Ihrem Scraper angemessen zu behandeln, da Netzwerk- oder Serverprobleme dazu führen können, dass Anfragen fehlschlagen oder Daten unvollständig sind. Sie können try/except-Blöcke verwenden, um Ausnahmen abzufangen und sie angemessen zu behandeln, z. B. indem Sie die Anfrage erneut versuchen oder den Fehler protokollieren.
  • Skalierung des Scrapers: Wenn Sie eine große Menge an Daten aus mehreren Tabellen oder Websites scrapen müssen, müssen Sie Ihren Scraper möglicherweise skalieren, um die erhöhte Arbeitslast zu bewältigen. Dies kann durch Techniken wie Parallelverarbeitung oder die Verteilung der Arbeit auf mehrere Rechner geschehen.

Durch die Verbesserung und Optimierung Ihres Web Scrapers können Sie Daten effizienter und effektiver extrahieren und sicherstellen, dass Ihr Scraper zuverlässig und skalierbar ist. Im nächsten Abschnitt werden wir erörtern, warum die Inanspruchnahme eines professionellen Scraper-Dienstes eine bessere Option sein kann als die Erstellung eines eigenen Scrapers.

Zusammenfassung

In diesem Artikel haben wir die Grundlagen des Web Scraping behandelt und Ihnen gezeigt, wie Sie einen einfachen Python-Scraper erstellen, um Daten aus einer HTML-Tabelle zu extrahieren. Obwohl die Erstellung eines eigenen Scrapers eine nützliche und lehrreiche Übung sein kann, gibt es eine Reihe von Gründen, warum die Nutzung eines professionellen Scraper-Dienstes in vielen Fällen die bessere Option ist:

  • Professionelle Scraper sind in der Regel zuverlässiger und effizienter, da sie für Web-Scraping in großem Umfang entwickelt und optimiert wurden.
  • Professionelle Scraper verfügen oft über Funktionen und Möglichkeiten, die bei selbstgemachten Scrapern nicht zur Verfügung stehen, z. B. Unterstützung für CAPTCHAs, Ratenbegrenzung und Umgang mit AJAX und JavaScript.
  • Der Einsatz eines professionellen Abstreifers kann Ihnen Zeit und Ressourcen sparen, da Sie keinen eigenen Abstreifer bauen und warten müssen.
  • Professionelle Scraper bieten oft verschiedene Preisoptionen an und können kostengünstiger sein als die Erstellung eines eigenen Scrapers, insbesondere wenn Sie große Datenmengen scrapen müssen.

Obwohl der Bau eines eigenen Abstreifers eine lohnende Erfahrung sein kann, kann es in vielen Fällen praktischer und kostengünstiger sein, einen professionellen Abstreifdienst zu beauftragen. Letztendlich hängt die Entscheidung, ob Sie Ihren eigenen Abstreifer bauen oder einen professionellen Service in Anspruch nehmen, von Ihren spezifischen Bedürfnissen und Ressourcen ab.

Ich hoffe, dass dieser Artikel einen hilfreichen Überblick über Web Scraping und den Aufbau eines einfachen HTML-Tabellen-Scrapers mit Python gegeben hat.

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
LeitfädenWie man Amazon-Produktdaten scrappt: Ein umfassender Leitfaden zu Best Practices & Tools

Entdecken Sie die Komplexität des Scrapens von Amazon-Produktdaten mit unserem ausführlichen Leitfaden. Von Best Practices und Tools wie der Amazon Scraper API bis hin zu rechtlichen Aspekten erfahren Sie, wie Sie Herausforderungen meistern, CAPTCHAs umgehen und effizient wertvolle Erkenntnisse gewinnen.

Suciu Dan
Autorenavatar
Suciu Dan
15 Minuten lesen
Vorschaubild
LeitfädenWie man einen Scraper baut und eine Datei mit Puppeteer herunterlädt

Entdecken Sie 3 Möglichkeiten, wie Sie mit Puppeteer Dateien herunterladen und einen Web Scraper erstellen können, der genau das tut.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
8 Minuten lesen
Vorschaubild
LeitfädenFinden Sie heraus, wie man JavaScript-Tabellen mit Python scrapen kann

Lernen Sie, wie man JavaScript-Tabellen mit Python ausliest. Extrahieren Sie Daten aus Websites, speichern und manipulieren Sie sie mit Pandas. Verbessern Sie die Effizienz und Zuverlässigkeit des Scraping-Prozesses.

Andrej Ogiolan
Autorenavatar
Andrej Ogiolan
7 Minuten lesen