[PYTHON] Extraire le tableau de wikipedia

easy_read_html.py


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

Parce que ça a mal tourné.

Au début ça s'est bien passé

first.py


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

Maintenant que la table a été extraite, j'ai pensé que c'était "pandas`" et j'ai fermé mon ordinateur demain.

Le prochain jour

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

Et il n'y a qu'une erreur. Même si vous réinstallez anaconda ici, la situation ne change pas, alors réinstallez le système d'exploitation. Le résultat ne change pas: pleurez:

demandes et belle soupe

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"})

En fin de compte, il est inévitable d'obtenir des informations sur le WEB car elles seront prises en charge par les pandas, donc requêtes et [Beautiful Soup] ](Https://qiita.com/itkr/items/513318a9b5b92bd56185)

Ne devient pas une trame de données

df = pd.read_html(data) Si vous pensez que vous pouvez aller avec ceci, TypeError: cannot parse from'ResultSet'

Si vous vérifiez avec data

[<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 ...

Et comme une liste pd.read_html(data[0]) Si vous regardez data [0], c'est Html dans la table, donc si vous essayez la commande ci-dessus, TypeError: 'NoneType' object is not callable Je ne sais pas pourquoi cela arrive: pleure:

Google

Quand j'ai googlé avec `` l'objet 'nonetype' n'est pas appelable pandas read_html '', j'ai obtenu le résultat de stackoverflow, donc je l'ai essayé, mais il a été effacé. La liste est-elle inutile?

extraction de liste read_html

Après avoir cherché avec les mots-clés ci-dessus, j'ai finalement trouvé un moyen de travailler. https://teratail.com/questions/188717

type(data) Puisqu'il s'agit de bs4.element.ResultSet, il n'est pas devenu un argument de read_html tel qu'il est (il semble)

l'a fait

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 J'extrais le tableau par région dans ce qui précède et l'amène au format CSV. df = pd.read_html(str(data), keep_default_na=False)[0] Si vous utilisez str, il sera converti en str type, vous pouvez donc l'utiliser comme argument de read_html. Puisque le retour est une liste, vous pouvez extraire le premier résultat. df=df.iloc[:,0:28] La colonne est la 28e ligne depuis le début daf=df[df['Date'].str.contains('^2020')] Les colonnes obligatoires sont des colonnes Date commençant par 2020 Puisque str.contains ne peut pas être utilisé pour le DataFrame type dans son ensemble, le nom de la colonne est spécifié. daf.to_csv('Splunk_COVID19_Italy.csv', index=False) Supprimer le numéro d'index car il n'est pas nécessaire lors de la sortie de CSV

Je l'ai trouvé ...

https://python-forum.io/Thread-table-from-wikipedia Après avoir toujours fait ...: pleurer:

Meilleur gars

https://qiita.com/Retsuki/items/88eded5e61af200305fb Travaillez cool: sourire:

Résumé

[Entrée de site Web] de Splunk (https://splunkbase.splunk.com/app/1818/) ne fonctionnait pas, et quand je l'ai googlé, l'article sur pandas C'est facile / je ne suis pas sûr à cause d'une montagne d'erreurs quand j'essaye avec Dieu En conséquence, le chemin vers Python est long

Recommended Posts

Extraire le tableau de wikipedia
Extraire les redirections des vidages Wikipedia
Extrayez la quantité de caractéristiques (identité) du texte.
Extraire une langue spécifique du Wiktionnaire
Extraire des données spécifiques d'un JSON complexe
Extraire du texte d'images avec Python
Comment accéder à wikipedia depuis python
Extraire des chaînes de fichiers avec Python
Extraire des images des ensembles de données Cifar et CUCUMBER-9
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Extraire du texte japonais d'un PDF avec PDFMiner
[TensorFlow] Extraire des fonctionnalités du modèle entraîné Inception-v3
[Python] (Line) Extraire les valeurs des images graphiques