So speichern Sie eine von Python gekratzte Tabelle in CSV

Über diesen Artikel

Ich musste die Tabelle auf der Webseite in meiner Recherche abkratzen, damit ich das Python-Programm vorstellen kann, das ich damals verwendet habe. Übrigens, da ich keinen Scraping-Verlauf hatte, habe ich es gemacht, während ich verschiedene Dinge untersucht habe, aber es gab fast keine Erklärung, wie der Tabellenteil von HTML in CSV konvertiert werden kann, nachdem die Tabelle auf der Webseite in HTML konvertiert wurde. Also habe ich diesen Artikel geschrieben.

Einführung

Hinweise zum Scraping finden Sie unter der folgenden URL. https://qiita.com/Azunyan1111/items/b161b998790b1db2ff7a

Scraping mit Python

Das gesamte Programm finden Sie unter hier.

import

import csv
import urllib
from bs4 import BeautifulSoup

Beschreibung der importierten Bibliothek -Csv ist eine Standard-Python-Bibliothek und wird diesmal zum Schreiben von CSV-Dateien verwendet. ・ Urllib wird verwendet, um auf Daten (HTML) im Web zuzugreifen und diese zu erfassen. -BeautifulSoup wird verwendet, um gezielte Daten aus HTML zu extrahieren

Holen Sie sich HTML

image.png

url = "https://en.wikipedia.org/wiki/List_of_cities_in_Japan"
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
#Tabelle aus HTML(Tabellen-Tag)Holen Sie sich alle Teile von
table = soup.find_all("table")

Dieses Mal werde ich die Wikipedia-Tabelle abkratzen, in der japanische Städte zusammengefasst sind.

Das Programm urllib.request.urlopen ruft den HTML-Code der angegebenen URL ab. Formatieren Sie es anschließend so, dass es mit Beautiful Soup einfach zu handhaben ist, und holen Sie dann den gesamten Teil mit der Tabelle (den Teil, der vom Tabellen-Tag umgeben ist) aus HTML mitoup.find_all ("table") ab, und Sie können loslegen.

Finden Sie den Namen des TABLE-Tags heraus, das Sie erhalten möchten

image.png

Wenn Sie einen Chrome-Browser verwenden, können Sie die Entwicklertools (schwarzer Bildschirm im Screenshot) durch Drücken von F12 (Befehl + Option + I auf dem Mac) aufrufen. Danach können Sie den HTML-Quellcode von Elements sehen. Suchen Sie also nach dem Tabellen-Tag, das Sie kratzen möchten. Dieses Mal möchte ich die Tabelle in blau auswählen lassen. Tatsächlich kann dies durch einfaches Auswählen desjenigen, dessen Klassenname "wikitable" ist, aus allen Tabellen-Tags erhalten werden.

for tab in table:
    table_className = tab.get("class")
    print(table_className)
    if table_className[0] == "wikitable":
        break

#Ausgabeergebnis, wenn keine break-Anweisung vorhanden ist
# ['vertical-navbox', 'nowraplinks', 'hlist']
# ['wikitable'] <-Hier,Beenden Sie mit der break-Anweisung
# ['wikitable', 'sortable']
# ['wikitable', 'sortable']
# ['wikitable']
# ['nowraplinks', 'mw-collapsible', 'autocollapse', 'navbox-inner']

-Der Grund, warum table_className [0] gesetzt ist, ist, dass das Wikitable am Anfang von className steht. -Auch in diesem Fall gibt es mehrere andere Tabellen mit demselben Namen wie das Wikitable in HTML, aber da die Tabelle, die ich diesmal möchte, immer das erste Wikitable ist, geben Sie nach dem ersten Übergeben der if-Anweisung sofort eine break-Anweisung aus. Ich benutze es, um aus der Schleife herauszukommen.

Wenn Sie die gewünschte Tabelle haben, konvertieren Sie sie in CSV und speichern Sie sie.

Fügen Sie zum Schluss die CSV-Speicherfunktion zum obigen Programm hinzu.

for tab in table:
    table_className = tab.get("class")
    if table_className[0] == "wikitable":
        #CSV-Teil speichern
        with open("test.csv", "w", encoding='utf-8') as file:
            writer = csv.writer(file)
            rows = tab.find_all("tr")
            for row in rows:
                csvRow = []
                for cell in row.findAll(['td', 'th']):
                    csvRow.append(cell.get_text())
                writer.writerow(csvRow)
        break

Der Teil der CSV-Speicherfunktion besteht darin, das Tabellen-Tag in Zeilenrichtung ("tr") zu extrahieren, in Spaltenrichtung ("td", "th") herauszunehmen, im Listenformat anzuhängen und in CSV (Tabelle) zu speichern. Wenn Sie das Tag extrahieren können, können Sie es beim Kopieren und Einfügen verwenden.

Versuchen Sie zur Bestätigung, CSV mit Pandas anzuzeigen

import pandas as pd
pd.read_csv("test.csv")

image.png

Sicherlich könnte die gespeicherte CSV von Pandas angezeigt werden!

Zusammenfassung

Es hängt von der Site ab, die Sie kratzen möchten, aber ich denke, Sie können die Tabelle auf diese Weise in CSV erhalten! Vielen Dank für Ihren bisherigen Besuch!

Verweise

https://qiita.com/Azunyan1111/items/b161b998790b1db2ff7a

Recommended Posts

So speichern Sie eine von Python gekratzte Tabelle in CSV
Lesen einer CSV-Datei mit Python 2/3
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
So überschreiben Sie eine benutzerdefinierte Typmethode, die von Python Swig generiert wird
[Python] So konvertieren Sie eine Datenbankdatei in CSV
So teilen und speichern Sie einen DataFrame
[Python] Wie man eine Klasse iterierbar macht
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
[Python] So invertieren Sie eine Zeichenfolge
Funktion zum Speichern von Bildern nach Datum [python3]
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
[Python] Speichern einer CSV-Datei als eindimensionale Array-Daten
[Good By Excel] Python-Skript zum Generieren von SQL zum Konvertieren von CSV in Tabelle
So führen Sie Maya Python-Skripte aus
[Python] Lesen der CSV-Datei (Methode read_csv des Pandas-Moduls)
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
[Python] So zeigen Sie die Elemente der Liste nebeneinander an
So öffnen Sie einen Webbrowser über Python
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie eine JSON-Datei in Python
So generieren Sie ein Python-Objekt aus JSON
So fügen Sie einen Suchpfad für Python-Module hinzu
So löschen Sie die von Python ausgegebenen Zeichen
So benachrichtigen Sie Discord-Kanäle in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
[Python] So sortieren Sie Instanzen nach Instanzvariablen
[Python] Fortsetzung - Konvertieren Sie PDF-Text Seite für Seite in CSV
So installieren Sie Python
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
[Python] So löschen Sie einfach einen untergeordneten Prozess, der durch Multiprozess gestartet wurde, von einem anderen Prozess
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So richten Sie eine Python-Umgebung mit pyenv ein
[Python] So erweitern Sie Variablen in einer Zeichenfolge
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
[Python] Konvertiert PDF-Text für jede Seite in CSV (2/24 Postscript)
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
So zeigen Sie DataFrame als Tabelle in Markdown an
So erstellen Sie ein Python-Paket mit VS Code
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Lesen von CSVs, die in Python nur Ganzzahlen enthalten
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[GCF + Python] So laden Sie Excel in GCS hoch und erstellen eine neue Tabelle in BigQuery
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
So veröffentlichen Sie GitHub-Seiten mit Pelican, einem statischen HTML-Generator von Python