import pandas as pd
import requests
from bs4 import BeautifulSoup
url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal'
# dfs = pd.read_html("https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal", flavor="lxml")
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table', {'class': 'wikitable'})
dfs = pd.read_html(str(table).replace("2;", "2"))
print(dfs[0])
Это работает, вам нужно преобразовать таблицу в строку для read_html
для правильной работы.
По некоторым причинам атрибуты rowspan
и colspan
отображаются как "2;"
и я не могу найти хороший способ исправить это - pd.read_html()
это не нравится, поэтому я просто использую .replace()
.
Теоретически это должно выполнять sh то же самое, но короче и проще, но имеет ту же проблему с rowspan
:
dfs = pd.read_html("https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal", flavor="lxml")
print(dfs[0]) # whatever the index of the table is
Кажется, что это возможная ошибка с read_html
(pandas версия 1.0.3).