求助:爬取FBref网站MLS球员射门创造数据时获球队表格
解决FBref MLS球员数据爬取错误问题
你的问题出在pd.read_html()会返回页面中所有HTML表格的列表,默认展示的是列表第一个元素(球队统计表格),而目标球员进球与射门创造数据表格是列表的第二个元素(索引为1)。
解决方案1:通过索引直接获取目标表格
修改代码,指定取列表中的第二个表格:
import pandas as pd url_df = 'https://fbref.com/en/comps/22/gca/Major-League-Soccer-Stats' # 获取页面所有表格 all_tables = pd.read_html(url_df) # 取第二张表格(索引从0开始计数) player_gca_df = all_tables[1] # 查看结果 print(player_gca_df.head())
解决方案2:用match参数精准匹配目标表格
为了避免页面表格顺序变动导致索引失效,可以通过匹配表格的表头关键词(比如球员表包含"Player"列)来定位:
import pandas as pd url_df = 'https://fbref.com/en/comps/22/gca/Major-League-Soccer-Stats' # 匹配包含"Player"的表格,直接返回目标表格 player_gca_df = pd.read_html(url_df, match="Player")[0] print(player_gca_df.head())
补充说明
- FBref当前页面中,球队统计表格是页面的第一个表格,球员个人统计是第二个,所以用索引1可以直接获取。
- 使用
match参数更健壮,即使页面表格顺序调整,只要表头关键词不变就能正确抓取目标数据。
内容的提问来源于stack exchange,提问作者user15039720
相关产品推荐
相关产品推荐

