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

BeautifulSoup爬取pro-football-reference站点时错误获取第二张表格问题

问题原因及解决办法

问题原因

你遇到的问题核心原因是目标站点的首个表格「Week 10 injury report」被放在了HTML注释块中:

  • 用requests直接拉取的页面原始源码里,这个表格的完整代码被<!--和-->包裹,属于注释内容
  • BeautifulSoup默认不会解析注释内的HTML标签为正常DOM节点,所以findAll('table')返回的列表里根本不包含这个被注释的表格,你取索引0的元素自然就是未被注释的第二个表格「Team Injuries」

解决方法

你需要先提取页面中的所有注释内容,筛选出包含目标表格的注释块,再单独解析这块内容即可,示例代码如下:

import requests
from bs4 import BeautifulSoup, Comment

url = "https://www.pro-football-reference.com/teams/buf/2021_injuries.htm"
r = requests.get(url)
soup = BeautifulSoup(r.content, features="lxml")

# 提取所有注释内容
comments = soup.find_all(string=lambda text: isinstance(text, Comment))
target_table_html = None
for c in comments:
    # 筛选包含Week 10 injury report表格的注释
    if 'Week 10 injury report' in c:
        target_table_html = c
        break

# 解析注释内的表格
if target_table_html:
    table_soup = BeautifulSoup(target_table_html, features="lxml")
    table = table_soup.find('table')
    for player in table.findAll("tr"):
        print([i.getText() for i in player.findAll("td")])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:10