You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas获取网站全部表格 解决fbref站点第三张表格缺失问题

问题根因

fbref站点的球员维度表格默认包裹在HTML注释<!-- -->中,不会直接作为DOM节点加载,因此pandas的read_html、常规BeautifulSoup节点遍历都无法直接识别到该表格,同类页面的非首屏表格均采用了同样的懒加载逻辑,因此普遍只能抓取到前两个球队维度的表格。

解决步骤
  • 先请求获取完整页面源码,单独提取页面内所有HTML注释内容
  • 从注释中匹配到对应球员表格的HTML片段
  • 单独解析该表格片段即可拿到目标数据
示例代码
import requests
from bs4 import BeautifulSoup, Comment
import pandas as pd

url = "https://fbref.com/en/comps/9/keepersadv/Premier-League-Stats"
# 增加合法UA避免站点拦截请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, "html.parser")

# 提取页面所有注释内容
comments = soup.find_all(string=lambda text: isinstance(text, Comment))

# 匹配球员进阶守门数据表格,对应id为stats_keeper_adv
player_table = None
for cm in comments:
    if 'id="stats_keeper_adv"' in cm:
        player_table = cm
        break

if player_table:
    # 解析提取到的表格片段
    df_player_keeper_adv = pd.read_html(player_table, header=1)[0]
    print(df_player_keeper_adv)

同类页面只需要替换上述代码中匹配的表格id,即可抓取到对应隐藏的球员维度表格。

内容的提问来源于stack exchange,提问作者ancalleja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:06