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

Python出现IndexError: list index out of range,求错误原因排查

问题分析与解决

触发IndexError的原因

你代码里的team_game_number_element和team_game_number都是空列表,第一次循环x=0时,你尝试访问team_game_number_element[0]——但空列表根本没有索引为0的元素,直接触发list index out of range错误。而且你后续用[x].append的写法完全错误,append是列表的方法,应该直接调用列表的append,而不是先访问一个不存在的索引再调用方法。

另外还有个潜在问题:NBA常规赛虽有82场,但球员可能因伤缺席,网页里的比赛记录数量大概率少于82,硬循环82次最后也会找不到元素抛出NoSuchElementException。

修正后的代码

方案一:先定位所有Rk元素再遍历(推荐)

直接抓取所有data-stat="ranker"的th元素,遍历提取文本,不用硬循环82次:

team_game_number = []

# 定位所有Rk列的元素
rk_elements = driver.find_elements_by_xpath('//th[@data-stat="ranker"]')
for element in rk_elements:
    # 跳过表头的"Rk"文本,只取比赛记录的数字
    if element.text.isdigit():
        team_game_number.append(element.text)
        print(element.text)

方案二:修正原列表的使用方式

如果坚持按原逻辑调整,应该直接往列表里追加元素,而不是访问不存在的索引:

team_game_number_element = []
team_game_number = []

for x in range(82):
    y = str(x + 1)
    try:
        element = driver.find_element_by_xpath('//th[@data-stat="ranker" and contains(., "' + y + '")]')
        team_game_number_element.append(element)
        team_game_number.append(element.text)
        print(team_game_number[-1])
    except:
        # 找不到元素时退出循环(比如球员没打满82场)
        break

关键注意点

  • 空列表不能直接通过索引访问元素,添加元素要用列表.append(元素)的方式;
  • 不要假设比赛数量一定是82场,最好先获取所有元素再遍历,或者加异常处理避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:35:20