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

IndexError: list index out of range错误原因及解决方法咨询

爬取fbref时遇到IndexError的问题解答

错误原因解释

soup.select('table.stats_table')是从网页里筛选所有带stats_table类的表格,返回的是一个列表。你写[0]是想取列表里第一个表格,但报错“索引越界”,本质是这个列表是空的——网页里根本没找到符合条件的表格。

之前正常现在突然报错,大概率是两个原因:要么目标网站(fbref)修改了网页结构,表格的类名不再是stats_table;要么网站的反爬机制把你的请求识别成了机器人,返回的不是正常的联赛统计页面(比如返回了验证页、空白页),自然找不到目标表格。

防错改进措施

  • 先验证请求是否成功:在解析网页前,先检查请求的状态码,只有状态码为200时才继续处理:
    if data.status_code != 200:
        print(f"请求失败,状态码:{data.status_code}")
        exit()
    
  • 先判断列表非空再取值:不要直接用[0]强行取第一个元素,先确认列表里有内容:
    standings_tables = soup.select('table.stats_table')
    if standings_tables:
        standings_table = standings_tables[0]
    else:
        print("未找到目标表格,请检查网页结构或类名是否变化")
        # 这里可以添加日志记录或其他异常处理逻辑
    
  • 模拟浏览器请求规避反爬:给请求添加请求头,伪装成正常浏览器访问:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    data = requests.get(standings_url, headers=headers)
    
  • 打印返回内容排查问题:如果还是找不到表格,打印data.text[:500](返回内容的前500字符),看看返回的是不是正常的页面,有没有反爬验证的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:39:59