python - 从维基百科获取带有python标题的表格
问题描述
我正在尝试从维基百科的页面中获取多个表格,例如: https ://en.wikipedia.org/wiki/UEFA_Euro_2016_squads
当我尝试:
import pandas
df = pandas.read_html("https://en.wikipedia.org/wiki/UEFA_Euro_2016_squads")
然后我得到一个表列表,但我无法知道哪个表属于哪个团队。例如:
理想的情况是,如果我可以有一个 dict,如下所示:
{ '<Name of country A>': '<Country A table in dataframe format>',
'<Name of country B>': '<Country B table in dataframe format>' }
我还查看了以下库:
- Wikipedia-api:我在这里没有找到任何处理表格的功能
- 维基百科:这个看起来很旧,可能已经贬值了
解决方案
您快到了。要意识到的主要事情是,df
您的代码中的实际上是一个表列表 - 准确地说是 29 个,其中只有前 24 个是相关的。
整理好之后,您还需要获取表格的国家/地区列表。因此,处理此问题的一种方法(可能还有其他方法):
import requests
import pandas as pd
from bs4 import BeautifulSoup as bs
url = "https://en.wikipedia.org/wiki/UEFA_Euro_2016_squads"
req = requests.get(url)
tables = pd.read_html(url) #or pd.read_html(req.text)
soup = bs(req.text,'lxml')
countries = soup.select('h3 span.mw-headline')[:24] #using css selectors
此时,如果你
for country, df in zip(countries, tables):
print(country.text,df)
你会得到国家/团队对,你可以将它们分配给字典或其他东西。
推荐阅读
- reactjs - 不要使用 react-router V4 加载外部 .js 文件
- algorithm - 在无向无环简单图中找到最小子图
- ruby-on-rails - 在 Rails 滚动部署中使用带有 CDN 的散列资产
- oracle11g - /*csv*/ 在选择查询中
- python - 将数据透视表存储到 csv - 保留所有数据
- macos - 如何使 Mac 终端提示符和命令加粗?
- json - json4s - 部分反序列化为案例类
- ionic-framework - Ionic Pro 打包 IOS 应用程序错误
- specman - Specman e 有 struct 构造函数吗?
- sql - 如何编写更新 SQL 以从一个表中复制多条记录以更新另一表上的相应字段?