Finden Sie heraus, wie man JavaScript-Tabellen mit Python scrapen kann
Andrei Ogiolan am 24. April 2023

Einführung
Web Scraping ist ein leistungsfähiges Werkzeug, mit dem Sie Daten aus Websites extrahieren und für eine Vielzahl von Zwecken nutzen können. Sie können damit Daten für Business Intelligence sammeln, Änderungen auf Websites verfolgen oder Ihre eigenen Webanwendungen erstellen. In diesem Artikel konzentrieren wir uns darauf, wie man JavaScript-Tabellen mit Python scrapen kann.
Was sind JavaScript-Tabellen?
JavaScript-Tabellen sind eine gängige Methode, um tabellarische Daten im Web anzuzeigen, und sie sind auf einer Vielzahl von Websites zu finden. Das Scraping dieser Tabellen kann eine Herausforderung sein, da die Daten oft als JavaScript-Objekt in den Quellcode der Seite eingebettet sind und nicht in einer Standard-HTML-Tabelle. Mit den richtigen Tools und Techniken ist es jedoch möglich, diese Daten mit Python zu extrahieren.
Wir beginnen mit der Einrichtung der erforderlichen Tools und der Installation aller erforderlichen Bibliotheken. Dann werden wir den Prozess der Verwendung von Python und eines Web-Treibers durchlaufen, um die Webseite zu laden und die Daten aus der Tabelle zu extrahieren. Abschließend werden wir einige Möglichkeiten zur Verbesserung der Effizienz und Zuverlässigkeit des Scraping-Prozesses erörtern und erläutern, warum es besser sein kann, für komplexere Aufgaben einen professionellen Scraper zu verwenden.
Einrichten
Bevor wir mit dem Scraping von JavaScript-Tabellen mit Python beginnen können, müssen wir uns um 2 Voraussetzungen kümmern:
- Python: Diese Anleitung setzt voraus, dass Sie Python auf Ihrem Rechner installiert haben. Wenn Sie Python nicht installiert haben, können Sie es von der offiziellen Website herunterladen und den Anweisungen für Ihr Betriebssystem folgen.
- Ein Webtreiber: Um Webseiten mit Python zu laden und mit ihnen zu interagieren, benötigen wir einen Web-Treiber. Es stehen mehrere Optionen zur Verfügung, z. B. ChromeDriver, FirefoxDriver und SafariDriver. In diesem Lehrgang werden wir ChromeDriver verwenden.
Sobald Sie Python und einen Web-Treiber installiert haben, müssen Sie die folgenden Bibliotheken installieren:
- Selenium: Selenium ist eine Bibliothek, mit der Sie einen Webbrowser über Python steuern können. Wir werden sie verwenden, um die Webseite mit der Tabelle zu laden und mit ihr zu interagieren. Wenn es um JavaScript-Tabellen geht, ist es wichtig, eine Bibliothek wie Selenium anstelle von Python-Anfragen zu verwenden, weil man warten kann, bis ein JavaScript-generiertes Element auf der Seite erscheint, falls es nicht vorhanden ist, wenn die Webseite geladen wird.
- Pandas: Pandas ist eine Bibliothek, die einfach zu verwendende Datenstrukturen und Datenanalysewerkzeuge für Python bereitstellt. Wir werden sie verwenden, um die Daten, die wir aus der Tabelle extrahieren, zu speichern und zu manipulieren.
Um diese Bibliotheken zu installieren, öffnen Sie ein Terminal oder eine Eingabeaufforderung und verwenden Sie den Befehl pip, um sie zu installieren:
$ pip install selenium pandas
Das war's! Sie sind nun bereit, JavaScript-Tabellen mit Python zu scrapen. Im nächsten Abschnitt werden wir den Prozess Schritt für Schritt durchgehen.
Fangen wir an zu kratzen
Nachdem wir nun alle notwendigen Tools installiert haben, ist es an der Zeit, JavaScript-Tabellen mit Python zu scrapen. Der Prozess umfasst die folgenden Schritte
- Laden Sie die Webseite, die die Tabelle enthält, mit Selenium und einem Webtreiber.
- Extrahieren Sie die Daten aus der Tabelle mit Selenium und Python.
- Speichern und Verarbeiten der Daten mit Pandas.
Gehen wir jeden dieser Schritte im Detail durch:
Schritt 1: Laden der Webseite
Als Erstes müssen wir die Webseite laden, die die Tabelle enthält, die wir auslesen wollen. Wir können dies mit Selenium und einem Web-Treiber tun.
Zunächst importieren wir die erforderlichen Bibliotheken:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
Als Nächstes erstellen wir eine Instanz des Web-Treibers und verwenden sie zum Laden der Webseite:
# Ersetzen Sie "path/to/chromedriver" durch den Pfad zu Ihrer ChromeDriver-Ausführung
driver = webdriver.Chrome(service=Service('path/to/chromedriver'))
# Laden Sie die Webseite
driver.get('https://html.com/tags/table/')
Es ist wichtig zu beachten, dass die Webseite vollständig geladen sein muss, bevor die Daten aus der Tabelle extrahiert werden. Möglicherweise müssen Sie die Funktion driver.implicitly_wait() verwenden, um auf das Laden der Seite zu warten, oder die Funktion driver.find_element(By.*, '') verwenden, um auf das Laden eines bestimmten Elements auf der Seite zu warten.
Schritt 2: Extrahieren der Daten
Sobald die Webseite geladen ist, können wir Selenium verwenden, um die Daten aus der Tabelle zu extrahieren. Es gibt mehrere Möglichkeiten, dies zu tun, aber eine Methode besteht darin, die Funktion driver.find_elements(By.CSS_SELECTOR, 'td') zu verwenden, um die Zellen in der Tabelle zu finden und den Text aus jeder Zelle zu extrahieren.
Hier ein Beispiel für die Extraktion der Daten aus einer einfachen Tabelle mit zwei Spalten:
# Alle Zeilen der Tabelle finden
rows = driver.find_elements(By.CSS_SELECTOR, 'table tr')
# Für jede Zeile die Zellen finden und den Text extrahieren
for row in rows:
try:
cells = row.find_elements(By.CSS_SELECTOR, 'td') oder row.find_elements(By.CSS_SELECTOR, 'th')
except:
continue
for cel in cells:
print(cel.text, end= " ")
print()
driver.quit()
Denken Sie daran, dass Sie je nach Struktur der Tabelle und der darin enthaltenen Elemente möglicherweise einen anderen CSS-Selektor verwenden müssen. Sie können die Entwicklertools in Ihrem Webbrowser verwenden, um die Seite zu untersuchen und den passenden Selektor zu finden.
Schritt 3: Speichern und Verarbeiten der Daten
Sobald Sie die Daten aus der Tabelle extrahiert haben, können Sie sie in einem Pandas-Datenrahmen speichern und nach Bedarf bearbeiten. Hier ist ein Beispiel dafür, wie man das macht:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
import pandas as pd
df = pd.DataFrame()
driver = webdriver.Chrome(service=Service('/path/to/chromedriver'))
# Den Webdriver zum Laden einer Webseite verwenden
driver.get('https://html.com/tags/table/')
# Beim Scraping von JavaScript-generierten Inhalten ist es wichtig, ein paar Sekunden zu warten
time.sleep(4)
table = driver.find_element(By.CSS_SELECTOR, 'table')
# Für jede Zeile die Zellen finden und den Text extrahieren
df = pd.read_html(table.get_attribute('outerHTML'))
print(df)
driver.close()
Tiefer tauchen
Mit den oben beschriebenen Schritten können Sie zwar JavaScript-Tabellen mit Python scrapen, aber es gibt ein paar Möglichkeiten, die Effizienz und Zuverlässigkeit des Prozesses zu verbessern.
Eine Möglichkeit, die Effizienz zu verbessern, ist die Verwendung eines Headless Browsers, d. h. eines Browsers, der im Hintergrund ohne grafische Benutzeroberfläche läuft. Dies kann schneller sein als die Ausführung eines vollständigen Browsers, und es ist weniger ressourcenintensiv. Um einen Headless-Browser mit Selenium zu verwenden, können Sie beim Erstellen der Web-Treiber-Instanz das --headless-Flag verwenden.
Eine weitere Möglichkeit, die Effizienz zu steigern, ist die Nutzung eines Dienstes, der rotierende IP-Adressen bereitstellt, wie z. B. ein Proxy-Server. So können Sie vermeiden, als Scraper erkannt und von der Website blockiert zu werden, da die IP-Adresse der Anfrage bei jeder Anfrage zu wechseln scheint. WebScrapingAPI ist ein Dienst, der die Möglichkeit bietet, eine Website mit Hilfe eines Proxyservers zu scrapen. Weitere Informationen über die Verwendung von Proxys für Web Scraping finden Sie in unseren Dokumenten.
Um einen Proxy-Server mit Selenium zu verwenden, empfehle ich Ihnen dringend, selenium-wire zu verwenden, da es unkomplizierter ist als einfaches Selenium, wenn es um die Verbindung zu einem Proxy-Server geht. Wie jedes andere Python-Paket können Sie es einfach installieren, indem Sie den folgenden Befehl ausführen:
$ pip install selenium-wire
Dann können Sie das folgende Programmierbeispiel verwenden, um einen Proxy-Server mit Selenium zu verwenden:
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
import time
# Create a webdriver instance with the desired proxy server and authentication details
API_KEY = '<YOUR-API-KEY-HERE>'
options = {
'proxy': {
'http': f'http://webscrapingapi:{API_KEY}@proxy.webscrapingapi.com:80',
'https': f'https://webscrapingapi:{API_KEY}@proxy.webscrapingapi.com:80',
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Chrome(service=Service('/path/to/chromedriver'), seleniumwire_options=options)
# Use the webdriver to load a webpage
driver.get('http://httpbin.org/ip')
# When scraping JavaScript generated content it is important to wait a few seconds
time.sleep(5)
# Do something with the page, such as extract data or take a screenshot
# ...
# Close the webdriver
driver.quit()
Diese Techniken können zwar nützlich sein, um die Effizienz und Zuverlässigkeit Ihres Web-Scrapings zu verbessern, aber sie würden den Rahmen dieses Artikels sprengen. Für komplexere Scraping-Aufgaben kann es effizienter und zuverlässiger sein, einen professionellen Scraper wie WebScrapingAPI zu verwenden. Dieses Tool bietet zusätzliche Funktionen wie IP-Rotation und CAPTCHA-Umgehung, die den Scraping-Prozess wesentlich einfacher und zuverlässiger machen können.
Im nächsten Abschnitt fassen wir die Schritte zum Scrapen von JavaScript-Tabellen mit Python zusammen und erörtern die Vorteile der Verwendung eines professionellen Scrapers für komplexere Aufgaben.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass das Scrapen von JavaScript-Tabellen mit Python eine leistungsstarke Methode ist, um Daten aus Websites zu extrahieren und sie für eine Vielzahl von Zwecken zu nutzen. Unabhängig davon, ob Sie Ihren eigenen Code oder einen professionellen Scraper verwenden, kann diese Technik ein wertvolles Instrument zur Sammlung von Daten und zur Gewinnung von Erkenntnissen sein.
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

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.


Erfahren Sie, welcher Browser am besten geeignet ist, um Cloudflare-Erkennungssysteme beim Web-Scraping mit Selenium zu umgehen.


Lernen Sie, wie man HTML-Tabellen mit Golang für eine leistungsstarke Datenextraktion scrapen kann. Erforschen Sie die Struktur von HTML-Tabellen und erstellen Sie einen Web-Scraper mit der Einfachheit, Gleichzeitigkeit und der robusten Standardbibliothek von Golang.
