Wikipedia enthält viele seiner nützlichsten Daten in Tabellen: Listen von Ländern nach Fläche, Bevölkerungszahlen, Sporttabellen, historische Zeitleisten und Tausende anderer sortierbarer Gitter. Diese tabellarischen Daten sind öffentlich und gut strukturiert, was sie zum idealen Rohmaterial für Recherche und Analyse macht, aber das zellenweise Kopieren in eine Tabellenkalkulation skaliert nicht über eine oder zwei Tabellen hinaus.

Dieser Leitfaden zeigt Ihnen, wie man Wikipedia-Tabellen mit Python auf die saubere Weise scrapt. Sie bauen ein kleines, ausführbares Skript, das einen Artikel über die Crawling API abruft, die gewünschte Tabelle lokalisiert, sie direkt in einen pandas-DataFrame parst, bereinigt und einen ordentlichen CSV exportiert. Die Schritt-für-Schritt-Anleitung beschränkt sich auf öffentliche Tabellendaten, und der Rechtsabschnitt am Ende behandelt Wikipedias CC-BY-SA-Lizenz und die sanktionierten Massenabfragepfade, also lesen Sie ihn, bevor Sie dies auf viele Artikel anwenden. Dieser Beitrag befasst sich speziell mit Tabellen; für Seitentitel, Bilder und Infobox-Felder lesen Sie den Begleitleitfaden darüber, wie man Wikipedia scrapt.

Was Sie bauen werden

Ein Python-Skript, das eine öffentliche Wikipedia-Artikel-URL nimmt, das gerenderte HTML über die Crawling API abruft, eine bestimmte Tabelle anhand ihrer CSS-Klasse auswählt, sie in einen pandas-DataFrame einliest, die Spalten bereinigt und das Ergebnis als CSV schreibt. Das laufende Beispiel ist der Artikel "Liste der Länder und abhängigen Gebiete nach Fläche". Der Ausgabedatensatz enthält pro Zeile diese Felder:

  • Rang die Zeilenposition in der Quelltabelle, wo vorhanden.
  • Land / abhängiges Gebiet der Name, wie er in der Tabellenzelle erscheint.
  • Gesamtfläche die Flächenangabe in Quadratkilometern und Meilen.
  • Landfläche die reine Landfläche, wo die Tabelle sie aufführt.
  • Wasserfläche die Wasserfläche und ihr prozentualer Anteil am Gesamten.
  • Anmerkungen jede Fußnoten- oder Annotationsspalte, die die Tabelle enthält.

Die Struktur von Wikipedia-Tabellen verstehen

Wikipedia-Tabellen sind in einer Mischung aus HTML und Wikitext geschrieben, aber wenn die Seite Ihren Scraper erreicht, wurden sie in gewöhnliche <table>-, <tr>-, <th>- und <td>-Elemente mit Kopfzeilen und Datenzellen gerendert.

Das Detail, das beim Scraping am wichtigsten ist, ist die CSS-Klasse. Die meisten Datentabellen tragen die Klasse wikitable, die den standardmäßigen umrandeten Stil anwendet, den Sie in Artikeln sehen. Diese gemeinsame Klasse ist Ihr Anker: Sie ermöglicht es Ihnen, Datentabellen auszuwählen und Layout- oder Navigationstabellen auf derselben Seite zu überspringen, und sortierbare Tabellen fügen eine sortable-Klasse als weiteren Hinweis auf saubere Spaltendaten hinzu. Ein Artikel enthält oft mehrere Tabellen, also werden Sie in der Regel nach Klasse, Beschriftungstext oder Index einschränken, sobald Sie wissen, welche Sie wollen.

Warum eine einfache Anfrage zu kurz greifen kann

Für einen einzelnen Artikel gibt eine nackte HTTP-Anfrage verwendbares HTML zurück, da Wikipedia Artikelinhalte serverseitig bereitstellt. Das Problem zeigt sich beim Volumen: Dutzende oder Hunderte von Artikeln in einer engen Schleife von einer einzigen Datacenter-IP abrufen sieht überhaupt nicht wie ein normaler Leser aus, und das ist genau das Traffic-Muster, für das Rate-Limits und Bot-Abwehr gebaut wurden. Sie können auch auf transiente Sperren oder Teilantworten stoßen, die einen unbeaufsichtigten Lauf leise brechen.

Das Routing von Anfragen über die Crawling API gleicht beides aus. Sie ruft jede Seite hinter einem rotierenden Pool vertrauenswürdiger IPs ab, sodass ein größerer Crawl sich über viele Adressen verteilt, anstatt eine zu hämmern, und gibt fertiges HTML zurück, das Sie direkt an einen Parser übergeben können. Für das größere Bild lesen Sie, wie man Websites scrapt, ohne blockiert zu werden.

Voraussetzungen

Sie benötigen einige Dinge, bevor Sie Code schreiben. Keines davon dauert lange.

Grundlegendes Python. Sie sollten mit dem Schreiben und Ausführen eines Python-Skripts und dem Installieren von Paketen mit pip vertraut sein. Wenn Sie neu im Parsing-Bereich sind, passt der BeautifulSoup-Leitfaden gut zu diesem Tutorial.

Python 3.8 oder höher. Überprüfen Sie Ihre Version mit python --version. Wenn Sie es nicht haben, installieren Sie es von python.org oder über eine Distribution wie Anaconda und stellen Sie sicher, dass Python in Ihrem PATH ist.

Ein Crawlbase-Konto und Token. Registrieren Sie sich, öffnen Sie Ihr Dashboard und kopieren Sie Ihr normales Token von der Konto-Dokumentationsseite. Crawlbase enthält bis zu 20.000 kostenlose Anfragen zum Start, was mehr als genug ist, um diesen Leitfaden durchzuarbeiten. Behandeln Sie das Token wie ein Passwort: Es authentifiziert Ihre Anfragen, bewahren Sie es also aus der Versionskontrolle heraus.

Richten Sie das Projekt ein

Erstellen Sie eine virtuelle Umgebung, damit Projektabhängigkeiten isoliert bleiben, und installieren Sie dann die Bibliotheken, die der Scraper benötigt.

bash
python --version

python -m venv wiki_env
source wiki_env/bin/activate

pip install crawlbase beautifulsoup4 pandas lxml

Unter Windows aktivieren Sie die Umgebung mit wiki_env\Scripts\activate anstelle der source-Zeile. Vier Abhängigkeiten erledigen die Arbeit: crawlbase ist der offizielle Client für die Crawling API, beautifulsoup4 isoliert die genaue gewünschte Tabelle, pandas liest diese Tabelle in einen DataFrame ein und exportiert CSV, und lxml ist der schnelle HTML-Parser, den pandas unter der Haube für read_html verwendet. Das csv-Modul wird mit der Standardbibliothek ausgeliefert, sodass für den Exportschritt nichts weiter installiert werden muss.

Schritt 1: Einen gerenderten Wikipedia-Artikel abrufen

Beginnen Sie damit, das Artikel-HTML zu erhalten. Importieren Sie die Klasse CrawlingAPI, initialisieren Sie sie mit Ihrem Token, fordern Sie die Artikel-URL an und überprüfen Sie den Antwortstatus, bevor Sie parsen. Das vorherige Prüfen des Crawlbase status_code hält Fehler laut statt still.

python
from crawlbase import CrawlingAPI

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

def crawl(page_url):
    response = api.get(page_url)
    if response["status_code"] == 200:
        return response["body"].decode("utf-8")
    print(f"Request failed: {response['status_code']}")
    return None

if __name__ == "__main__":
    article_url = "https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area"
    html = crawl(article_url)
    print(html[:500] if html else "No HTML returned")

Führen Sie das Skript mit python wikipedia_scraper.py aus und Sie sollten echtes Artikel-Markup in den ersten 500 Zeichen sehen, was bestätigt, dass der Abruf funktioniert, bevor Sie einen Selektor schreiben. Die Funktion crawl gibt decodiertes HTML bei einem 200-Status zurück und None andernfalls, sodass der Rest des Skripts auf eine falsy-Rückgabe prüfen kann, anstatt bei einer fehlerhaften Antwort abzubrechen.

Crawlbase Crawling API

Der obige crawl-Helfer hält Ihren Code einfach: Ein Aufruf gibt fertiges HTML für jeden Artikel zurück. Hinter diesem Aufruf rotiert die Crawling API durch vertrauenswürdige IPs und verarbeitet Sperren für Sie, sodass Sie beim Skalieren von einem Artikel auf Hunderte von Tabellen keinen eigenen Proxy-Pool aufbauen und pflegen müssen. Verweisen Sie zuerst auf einen öffentlichen Artikel im kostenlosen Tarif.

Schritt 2: Die gewünschte Tabelle lokalisieren

Ein Artikel enthält in der Regel mehrere Tabellen, daher besteht der nächste Schritt darin, die richtige auszuwählen. Laden Sie das HTML in BeautifulSoup und verwenden Sie select_one mit der Klasse wikitable, um die erste Datentabelle zu greifen. Wenn eine Seite viele Wikitables enthält, wechseln Sie zu select und indizieren Sie die gewünschte, oder filtern Sie nach dem Beschriftungstext der Tabelle.

python
from bs4 import BeautifulSoup

def find_table(html, index=0):
    soup = BeautifulSoup(html, "html.parser")
    tables = soup.select("table.wikitable")
    if not tables:
        print("No wikitable found on this page.")
        return None
    print(f"Found {len(tables)} wikitable(s); using index {index}.")
    return tables[index]

Der find_table-Helfer gibt ein gerendertes <table>-Element zurück oder None mit einer klaren Meldung, wenn die Seite keine Wikitable hat. Das index-Argument ermöglicht es Ihnen, die zweite oder dritte Datentabelle auf belebtere Artikeln anzusprechen, ohne den Selektor neu zu schreiben. Das Drucken der Tabellenanzahl ist eine kleine Geste, die Ihnen beim allerersten Lauf mitteilt, ob Sie auf die erwartete Tabelle zielen.

Warum die Tabelle zuerst isolieren

Sie könnten die gesamte Seite an pandas.read_html übergeben und eine Liste aller Tabellen zurückbekommen, aber das vermischt Datentabellen mit Seitenleisten und Navigationsboxen und lässt Sie bei den Indizes raten. Das Auswählen der einen wikitable, die Sie mit BeautifulSoup möchten, und das Parsen nur dieses Elements gibt Ihnen jedes Mal einen vorhersagbaren einzelnen DataFrame.

Schritt 3: Die Tabelle in einen DataFrame parsen

Mit dem Tabellenelement zur Hand erledigt pandas die schwere Arbeit. Übergeben Sie das HTML der Tabelle an pandas.read_html, das eine Liste von DataFrames zurückgibt; da Sie eine einzelne Tabelle isoliert haben, nehmen Sie das erste Element. Dies ist der Kern des Tabellen-Scrapings: Eine Funktion verwandelt gerenderte HTML-Zeilen und -Zellen in einen typisierten, spaltenmäßigen DataFrame.

python
import pandas as pd
from io import StringIO

def table_to_df(table):
    frames = pd.read_html(StringIO(str(table)))
    if not frames:
        return None
    df = frames[0]
    print(f"Parsed table with {df.shape[0]} rows and {df.shape[1]} columns.")
    return df

Das Einwickeln von str(table) in StringIO entspricht der Erwartung des aktuellen pandas an HTML, das an read_html übergeben wird, und hält die Funktion frei von Veraltungswarnungen. Die gedruckte Form ist Ihre Vernunftsprüfung: Wenn die Zeilen- und Spaltenanzahlen mit dem übereinstimmen, was Sie im Artikel sehen, hat das Parsen die richtige Tabelle getroffen. Wenn Sie lieber die Zeilen selbst durchlaufen möchten, können Sie mit BeautifulSoup über table.select("tr") schleifen und jede th- und td-Zelle von Hand lesen, aber read_html ist schneller und verarbeitet die Header-Erkennung für Sie.

Schritt 4: Den DataFrame bereinigen

Rohe Wikipedia-Tabellen haben Eigenheiten: mehrstufige Spaltenheader, Fußnotenmarkierungen in Zellen, leere Spalten und Artefakte aus zusammengeführten Zellen. Ein kurzer Bereinigungsschritt verwandelt den geparsten Frame in etwas Analysebereit, bevor Sie ihn exportieren.

python
def clean_df(df):
    # Flatten multi-level headers into single strings.
    if isinstance(df.columns, pd.MultiIndex):
        df.columns = [" ".join(str(p) for p in col if "Unnamed" not in str(p)).strip()
                      for col in df.columns]

    # Strip footnote markers like [1] and [a] from string cells.
    df = df.replace(r"\[.*?\]", "", regex=True)

    # Drop fully empty rows and columns.
    df = df.dropna(axis=0, how="all").dropna(axis=1, how="all")

    # Trim surrounding whitespace on string cells.
    for col in df.select_dtypes(include="object").columns:
        df[col] = df[col].astype(str).str.strip()

    return df.reset_index(drop=True)

Jeder Schritt zielt auf ein echtes Problem in der Praxis. Das Abflachen eines MultiIndex verwandelt verschachtelte Kopfzeilen in einzelne lesbare Spaltennamen und entfernt die Unnamed-Platzhalter, die pandas für leere Kopfzellen einfügt. Der Regex-Replace entfernt die eingeklammerten Fußnotenmarkierungen, die Wikipedia in Zellen streut, wie [1] oder [a], die sonst numerische Spalten verunreinigen. Das Entfernen vollständig leerer Zeilen und Spalten bereinigt Artefakte aus zusammengeführten Zellen, und der abschließende Strip schneidet überflüssige Leerzeichen ab. Passen Sie die Schritte an die Tabelle vor Ihnen an; nicht jede Tabelle benötigt jeden Schritt.

Schritt 5: Das vollständige Skript zusammensetzen

Verdrahten Sie nun die Teile zu einem einzigen ausführbaren Skript: Artikel abrufen, Tabelle isolieren, parsen, bereinigen und als CSV exportieren.

python
from io import StringIO

import pandas as pd
from bs4 import BeautifulSoup
from crawlbase import CrawlingAPI

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

def crawl(page_url):
    response = api.get(page_url)
    if response["status_code"] == 200:
        return response["body"].decode("utf-8")
    print(f"Request failed: {response['status_code']}")
    return None

def find_table(html, index=0):
    soup = BeautifulSoup(html, "html.parser")
    tables = soup.select("table.wikitable")
    if not tables:
        return None
    return tables[index]

def table_to_df(table):
    frames = pd.read_html(StringIO(str(table)))
    return frames[0] if frames else None

def clean_df(df):
    if isinstance(df.columns, pd.MultiIndex):
        df.columns = [" ".join(str(p) for p in col if "Unnamed" not in str(p)).strip()
                      for col in df.columns]
    df = df.replace(r"\[.*?\]", "", regex=True)
    df = df.dropna(axis=0, how="all").dropna(axis=1, how="all")
    for col in df.select_dtypes(include="object").columns:
        df[col] = df[col].astype(str).str.strip()
    return df.reset_index(drop=True)

def main():
    article_url = "https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area"
    html = crawl(article_url)
    if not html:
        return

    table = find_table(html, index=0)
    if table is None:
        print("No table found.")
        return

    df = table_to_df(table)
    if df is None:
        print("Table could not be parsed.")
        return

    df = clean_df(df)
    df.to_csv("wikipedia_table.csv", index=False)
    print(f"Saved {df.shape[0]} rows to wikipedia_table.csv")
    print(df.head())

if __name__ == "__main__":
    main()

Das Skript ruft den Artikel ab, isoliert die erste Wikitable, parst sie in einen DataFrame, führt den Bereinigungsschritt durch und schreibt wikipedia_table.csv mit einer Kopfzeile und ohne Indexspalte. Das Drucken von df.head() am Ende gibt Ihnen eine sofortige Vorschau im Terminal. Um einen anderen Artikel oder eine andere Tabelle auf derselben Seite anzusprechen, ändern Sie article_url und das index-Argument für find_table.

Wie die Ausgabe aussieht

Führen Sie das vollständige Skript mit python wikipedia_scraper.py aus und Sie erhalten eine saubere CSV, eine Zeile pro Tabellenzeile, bereit für pandas, eine Datenbank oder eine Tabellenkalkulation.

csv
Rank,Country / dependency,Total area (km2),Total area (mi2),Land,Water,Notes
,World,510072000,196940000,148940000,361132000,
1,Russia,17098246,6601665,16376870,721391,
2,Antarctica,14200000,5500000,14200000,0,
3,Canada,9984670,3855100,9093507,891163,
4,China,9596961,3705407,9326410,270550,
5,United States,9525067,3677649,9147593,377424,

Die Spalten richten sich an der Quelltabelle aus, die Fußnotenmarkierungen sind weg, und die Zahlen sind sauber genug, um direkt in pandas zum Filtern, Sortieren oder Zusammenführen mit anderen Datensätzen zu laden. Tauschen Sie eine beliebige Tabelle mit einer wikitable aus und dieselben fünf Funktionen erzeugen dieselbe ordentliche Ausgabe.

Auf viele Artikel skalieren

Das Abrufen einer Tabelle ist der Baustein. Um dieselbe Tabelle über viele Artikel hinweg zu erfassen, packen Sie die fünf Funktionen in eine Schleife über eine Liste von URLs, steuern Sie das Tempo mit einem kurzen Schlaf und verketten Sie die bereinigten Frames. Ein paar Gewohnheiten halten einen längeren Lauf gesund.

  • Anfragen steuern. Fügen Sie einen kurzen Schlaf zwischen Anfragen hinzu und halten Sie das Volumen vernünftig, besonders gegenüber einer gemeinnützig betriebenen Ressource wie Wikipedia.
  • Auf Rotation setzen. Das Routing jedes Abrufs über die Crawling API verteilt Anfragen auf viele IPs, sodass ein größerer Crawl sich nicht auf einer einzigen Adresse konzentriert.
  • Die sanktionierten Massenpfade bevorzugen. Für große Volumen sind die Wikipedia-API und die offiziellen Datenbankdumps der vorgesehene Weg und belasten die Live-Site weit weniger als Scraping, wie im nächsten Abschnitt behandelt.

Für größere Crawls reiht der Async Crawler Anfragen ein und liefert Ergebnisse an einen Webhook, was für das Ausführen vieler Artikel geeignet ist, ohne Verbindungen offen zu halten. Um die bereinigten Tabellen in ein Data Warehouse zu übertragen, überträgt sich der Ansatz in Web Scraping zu SQL direkt von den DataFrames, die Sie hier aufbauen.

Das Scrapen öffentlicher Wikipedia-Tabellen für Recherche oder Analyse ist im Allgemeinen akzeptabel, aber der wichtige Teil ist die Lizenz, nicht nur der Zugang. Wikipedias Textinhalt ist unter der Creative-Commons-Lizenz "Namensnennung - Weitergabe unter gleichen Bedingungen" (CC-BY-SA) veröffentlicht: Sie dürfen ihn frei wiederverwenden und anpassen, sofern Sie die Quelle angeben und jedes abgeleitete Werk unter derselben Lizenz teilen. Wenn Sie eine von Ihnen abgerufene Tabelle veröffentlichen oder weiterverbreiten, nennen Sie Wikipedia und verlinken auf den Artikel, von dem Sie sie genommen haben, und beachten Sie die Bedingung der gleichen Lizenz für alles, was Sie darauf aufbauen. Das Scraping hebt diese Bedingungen nicht auf; es verschiebt nur die Daten.

Halten Sie sich an einige vernünftige Grenzen. Respektieren Sie Wikipedias Nutzungsbedingungen und seine robots.txt, halten Sie Ihre Anfragerate niedrig, damit Sie die Server einer gemeinnützigen Organisation nicht belasten, und beschränken Sie sich auf Tabellen und andere öffentliche Inhalte, anstatt ganze Artikel weiterzuveröffentlichen. Dieser Leitfaden ist genau deshalb auf tabellarische Daten beschränkt: Es ist das Stück, das am nützlichsten zum Wiederverwenden ist und am einfachsten sauber zuzuschreiben ist.

Wenn Sie Daten in großem Volumen benötigen, ist Scraping in der Regel das falsche Werkzeug. Die Wikimedia Foundation bietet sanktionierte Pfade an, die dafür gebaut wurden: die offizielle MediaWiki-API für strukturierte Abfragen und die regelmäßigen Datenbankdumps für das Massenspeichern ganzer Wikis. Diese belasten die Live-Site weit weniger, geben Ihnen sauberere Daten und sind der Weg, den das Projekt ausdrücklich für intensive Nutzung einlädt. Greifen Sie zuerst darauf zurück und behandeln Sie Live-Scraping als Option für einmalige oder kleine Aufgaben, bei denen ein Dump übertrieben wäre.

Zusammenfassung

Wichtigste Erkenntnisse

  • Die wikitable-Klasse ist Ihr Anker. Die meisten Wikipedia-Datentabellen tragen die CSS-Klasse wikitable, sodass Sie das richtige Gitter nach Klasse auswählen und Layout- und Navigationstabellen auf derselben Seite überspringen können.
  • pandas read_html erledigt das Parsen. Isolieren Sie eine Tabelle mit BeautifulSoup und übergeben Sie dann ihr HTML an read_html, um in einem einzigen Aufruf einen typisierten DataFrame zu erhalten, anstatt Zeilen und Zellen von Hand zu durchlaufen.
  • Vor dem Export bereinigen. Mehrstufige Header abflachen, eingeklammerte Fußnotenmarkierungen entfernen und leere Zeilen und Spalten löschen, damit die CSV analysebereit ist.
  • Abrufe über die Crawling API weiterleiten, um zu skalieren. Ein crawl-Aufruf gibt fertiges HTML zurück und rotiert IPs für Sie, sodass das Erfassen von Tabellen über viele Artikel hinaus keine einzige Adresse hämmert.
  • Quellen angeben und die sanktionierten Pfade nutzen. Wikipedia-Inhalte unterliegen CC-BY-SA, also nennen Sie die Quelle bei der Wiederverwendung, respektieren Sie die Nutzungsbedingungen und robots.txt und bevorzugen Sie die Wikipedia-API und Datenbankdumps für Massenarbeit.

Häufig gestellte Fragen

Wie extrahiere ich eine bestimmte Tabelle von einer Wikipedia-Seite?

Wählen Sie sie nach CSS-Klasse mit BeautifulSoup aus. Die meisten Datentabellen tragen die Klasse wikitable, sodass soup.select("table.wikitable") jede Datentabelle auf der Seite zurückgibt; indizieren Sie die gewünschte und übergeben Sie ihr HTML an pandas.read_html. Wenn mehrere Tabellen die Klasse teilen, schränken Sie nach Index oder dem Beschriftungstext der Tabelle ein, wie der find_table-Helfer in diesem Leitfaden zeigt.

Sollte ich pandas read_html oder BeautifulSoup verwenden, um die Tabelle zu parsen?

Beides, in Reihenfolge. Verwenden Sie BeautifulSoup, um die genaue <table> nach Klasse zu isolieren, und übergeben Sie dann dieses einzelne Element an pandas.read_html, um es in einen DataFrame umzuwandeln. Die gesamte Seite an read_html zu übergeben funktioniert auch, gibt aber eine Liste mit jeder Tabelle auf der Seite zurück, einschließlich Seitenleisten, was Sie bei Indizes raten lässt.

Warum Wikipedia-Anfragen überhaupt über die Crawling API weiterleiten?

Für einen einzelnen Artikel benötigen Sie es möglicherweise nicht, da Wikipedia Inhalte serverseitig bereitstellt. Der Wert zeigt sich beim Volumen: Viele Artikel von einer einzigen Datacenter-IP abzurufen wirkt wie ein Bot und lädt Rate-Limiting und transiente Sperren ein. Die Crawling API rotiert vertrauenswürdige IPs und gibt fertiges HTML zurück, sodass ein größerer Crawl sich über viele Adressen verteilt.

Das Scrapen öffentlicher Tabellen für Recherchen ist im Allgemeinen in Ordnung, aber Wikipedia-Inhalte sind unter CC-BY-SA lizenziert, sodass Sie bei der Weiterveröffentlichung einer Tabelle die Quelle angeben und abgeleitete Werke unter derselben Lizenz teilen müssen. Respektieren Sie die Nutzungsbedingungen und robots.txt, halten Sie Ihre Rate niedrig und beschränken Sie sich auf Tabellen, anstatt ganze Artikel weiterzuverbreiten. Für Massenbedarf sind die Wikipedia-API und Datenbankdumps der sanktionierte Weg.

Wie speichere ich die gescrapte Tabelle als CSV?

Sobald die Tabelle ein DataFrame ist, rufen Sie df.to_csv("wikipedia_table.csv", index=False) auf. Das Argument index=False verhindert, dass pandas seinen Zeilenindex als zusätzliche Spalte schreibt, sodass Sie eine saubere Kopfzeile und eine Zeile pro Tabellenzeile erhalten. Von dort aus lädt die CSV direkt wieder in pandas oder eine beliebige Tabellenkalkulation.

Wie unterscheidet sich das vom allgemeinen Wikipedia-Scraping-Leitfaden?

Dieses Tutorial ist auf Tabellen ausgerichtet: eine wikitable auswählen, sie mit pandas parsen, die Spalten bereinigen und CSV exportieren. Der Begleitleitfaden darüber, wie man Wikipedia scrapt, behandelt die breitere Seite, wie Titel, Bilder und Infobox-Felder. Verwenden Sie diesen, wenn Ihr Ziel spaltenförmige Daten sind, und jenen, wenn Sie andere Teile eines Artikels benötigen.

Jetzt loslegen

Crawlen Sie jede Website im großen Maßstab, ohne gegen die Infrastruktur zu kämpfen.

Crawlbase übernimmt Proxys, Fingerprints und CAPTCHAs, damit Ihr Team Datenpipelines ausliefert, statt Crawl-Infrastruktur zu pflegen. 1.000 Anfragen kostenlos, keine Karte erforderlich.

Self-Service · Kein Verkaufsgespräch erforderlich · Enterprise-Crawl-Volumen verfügbar