如果html表格有不同的标签,如何将html表格放到python中?

问题描述 投票:0回答:1

https:/www.worldometers.infocoronavirus#countries 是我正在使用的网站,我试图让选择了所有标签的表格从html中拉到我的jupyter笔记本上。我似乎遇到的问题是,如果我使用class = 'table',它会先拉出所有大陆标签,然后再拉出所有表格,当我尝试查看行时,它扰乱了我的数据被拉入的方式。

import requests
import lxml.html as lh
import pandas as pd
import csv
import requests
from bs4 import BeautifulSoup
url = 'https://www.worldometers.info/coronavirus/#countries'
page = requests.get(url)
print(page.status_code) #Checking the http response status code. Should be 200
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify())
all_tables=soup.find_all("table")
right_table = soup.find('table',{'class':'table'})
col_headers = [th.getText() for th in right_table.findAll('th')]
data = [[td.getText() for td in right_table.findAll('td')] for tr in right_table()]

当我试图结合col_headers和数据时,它说我有13列通过,数据有2990列。任何指导将是感激的。

python html parsing
1个回答
0
投票

你已经 "扁平化 "了表格--创建了一个所有的列表。<td>s. 你需要做的是创建一个 嵌套 列表:

data = [ [ td.text for td in tr.find_all("td") ] for tr in right_table.find_all("tr")]

df = pd.DataFrame(data, columns=col_header)
print(df.shape) # (231, 13)
© www.soinside.com 2019 - 2024. All rights reserved.