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

如何移除表格行中显示的带thead类的重复表头?

解决Pro-Football-Reference表格重复表头问题

我经常爬这个网站的数据,太懂你说的这个重复表头问题了!那些滚动时固定在顶部的重复表头确实会干扰数据提取,给你个简单直接的解决办法:

问题分析

你之前的代码只是跳过了第一行表头,但页面里每一段数据上方都会插入一个带thead类的重复表头行——这些就是你要移除的目标。我们需要在提取表格行时,直接过滤掉所有带有这个类的行。

修改后的代码

for yr in years:
    try:
        url = f'https://www.pro-football-reference.com/years/{yr}/passing.htm'
        html = urlopen(url)
        soup = BeautifulSoup(html, "lxml")
        column_headers = [th.getText() for th in soup.findAll('tr', limit=2)[0].findAll('th')]
        # 关键修改:过滤掉所有带thead类的重复表头行,再跳过第一行原始表头
        table_rows = soup.select("#passing tr:not(.thead)")[1:]
        # 后续处理数据行的逻辑...
    except Exception as e:
        print(f"处理年份{yr}时出错:{e}")

代码说明

  • 用CSS选择器#passing tr:not(.thead)精准筛选出所有不属于.thead类的表格行,直接排除掉重复表头;
  • 再通过[1:]跳过最顶部的原始表头行,剩下的table_rows就全是纯数据行,不会有重复表头干扰了。

如果你习惯用find_all方法,也可以这样写:

table_rows = [row for row in soup.find_all('tr', parent='#passing') if 'thead' not in row.get('class', [])][1:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:32