Python提取维基百科表格并关联对应球队名称生成DataFrame字典
解决方案
核心思路是结合页面结构解析关联国家名和对应表格,无需使用已废弃的维基专用库,具体实现如下:
依赖安装
pip install requests beautifulsoup4 pandas
实现代码
import requests from bs4 import BeautifulSoup import pandas as pd squad_dict = {} target_url = "https://en.wikipedia.org/wiki/UEFA_Euro_2016_squads" # 拉取页面源码 response = requests.get(target_url) response.encoding = "utf-8" soup = BeautifulSoup(response.text, "html.parser") # 遍历页面h3标签,该页所有国家队名称都存储在h3标签内 for h3_node in soup.find_all("h3"): country_node = h3_node.find("span", class_="mw-headline") # 跳过非国家名称的h3标签 if not country_node: continue country_name = country_node.get_text(strip=True) # 获取该国家名下方首个阵容表格 squad_table = h3_node.find_next_sibling("table", class_="wikitable") if not squad_table: continue # 转换表格为DataFrame存入字典 squad_df = pd.read_html(str(squad_table))[0] squad_dict[country_name] = squad_df
结果说明
运行代码后得到的squad_dict就是你需要的格式,键为国家队名称,值为对应阵容的DataFrame。
原单用pandas.read_html仅能按顺序返回所有表格,无法关联上下文标题,通过BeautifulSoup先解析DOM结构匹配名称和表格的对应关系,即可解决这个问题。
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

