[PYTHON] Tabelle aus Wikipedia extrahieren

easy_read_html.py


import pandas as pd
url = 'http://www.example.com'
df = pd.read_html(url)

Weil es schief gelaufen ist.

Zuerst ging es gut

first.py


import pandas as pd
url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Italy'
df=pd.read_html(url)

Nachdem die Tabelle extrahiert wurde, dachte ich, es sei "Pandas" und schloss morgen meinen Computer.

Nächster Tag

ValueError: invalid literal for int() with base 10: '2;'

Und nur ein Fehler. Selbst wenn Sie anaconda hier neu installieren, ändert sich die Situation nicht. Installieren Sie daher das Betriebssystem neu. Das Ergebnis ändert sich nicht: cry:

Anfragen und schöne Suppe

requests_bs.py


import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Italy'
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
data=soup.find_all('table', {"wikitable mw-collapsible"})

Am Ende ist es unvermeidlich, Informationen aus dem WEB zu erhalten, da diese von "Pandas" gepflegt werden, also Anfragen und [Schöne Suppe] ](Https://qiita.com/itkr/items/513318a9b5b92bd56185)

Wird kein Datenrahmen

df = pd.read_html(data) Wenn Sie glauben, dass Sie damit weitermachen können, kann TypeError: nicht aus "ResultSet" analysiert werden

Wenn Sie mit "Daten" überprüfen

[<table class="wikitable mw-collapsible" style="float:left; text-align:right; font-size:83%;">
 <caption style="font-size:116%"><span class="nowrap">Daily COVID-19 cases in Italy by region ...

Und listenartig pd.read_html(data[0]) Wenn Sie sich "data [0]" ansehen, handelt es sich um HTML in der Tabelle. Wenn Sie also den obigen Befehl "TypeError:" NoneType "-Objekt können nicht aufgerufen werden" Ich weiß nicht warum das passiert: weinen:

Google

Wenn ich mit "Nicht-Typ" -Objekt gegoogelt habe, ist pandas read_html nicht aufrufbar, habe ich das Ergebnis von stackoverflow erhalten, also habe ich es versucht, aber es wurde gelöscht. Ist die Liste nutzlos?

read_html Listenextraktion

Nachdem ich mit den oben genannten Schlüsselwörtern gesucht hatte, fand ich endlich einen Weg zur Arbeit. https://teratail.com/questions/188717

type(data) Da es sich um bs4.element.ResultSet handelt, wurde es nicht zu einem Argument von read_html, wie es ist (wie es scheint).

erledigt

wiki_get.py


import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Italy'
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
data=soup.find_all('table', {"wikitable mw-collapsible"})
df = pd.read_html(str(data), keep_default_na=False)[0]
df=df.iloc[:,0:28]
df.columns=['Date','VDA','LIG','PIE','LOM','VEN','TN','BZ','FVG','EMR','MAR','TOS','UMB','LAZ','ABR','MOL','CAM','BAS','PUG','CAL','SIC','SAR','ConfirmedNew','ConfirmedTotal','DeathsNew','DeathsTotal','ActiveICU','ActiveTotal']
daf=df[df['Date'].str.contains('^2020')]
daf.to_csv('Splunk_COVID19_Italy.csv', index=False)

https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Italy Ich extrahiere die Tabelle nach Region oben und bringe sie zu CSV. df = pd.read_html(str(data), keep_default_na=False)[0] Wenn Sie str verwenden, wird es in str type konvertiert, sodass Sie es als Argument für read_html verwenden können. Da es sich bei der Rückgabe um eine Liste handelt, können Sie das erste Ergebnis extrahieren. df=df.iloc[:,0:28] Die Spalte ist die 28. Zeile von Anfang an daf=df[df['Date'].str.contains('^2020')] Erforderliche Spalten sind Date Spalten, die mit 2020 beginnen Da str.contains nicht für DataFrame type als Ganzes verwendet werden kann, wird der Spaltenname angegeben. daf.to_csv('Splunk_COVID19_Italy.csv', index=False) Löschen Sie die Indexnummer, da dies bei der Ausgabe von CSV nicht erforderlich ist

Ich habe es gefunden ...

https://python-forum.io/Thread-table-from-wikipedia Nachdem ich immer gemacht habe ...: weinen:

Besserer Kerl

https://qiita.com/Retsuki/items/88eded5e61af200305fb Cool arbeiten: lächeln:

Zusammenfassung

Splunks Website-Eingabe funktionierte nicht, und als ich ihn googelte, erschien der Artikel über "Pandas" Das ist einfach / Ich bin mir wegen eines Berges von Fehlern nicht sicher, wenn ich es mit Gott versuche Infolgedessen ist der Weg nach Python lang

Recommended Posts

Tabelle aus Wikipedia extrahieren
Extrahieren Sie Weiterleitungen aus Wikipedia-Dumps
Extrahieren Sie die Merkmalsmenge (Identität) aus dem Text.
Extrahieren Sie eine bestimmte Sprache aus Wiktionary
Extrahieren Sie bestimmte Daten aus komplexem JSON
Extrahieren Sie mit Python Text aus Bildern
So greifen Sie über Python auf Wikipedia zu
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Extrahieren Sie japanischen Text aus PDF mit PDFMiner
[TensorFlow] Extrahieren Sie Funktionen aus dem trainierten Modell Inception-v3
[Python] (Linie) Extrahieren Sie Werte aus Diagrammbildern