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

Python中出现IndexError: list index out of range错误求助

聊聊你遇到的Python程序IndexError问题

嘿,我来帮你拆解下这个报错的根源,以及怎么解决它~

错误到底为啥出现?

你看这行报错的代码:

link2 = link2.split('https://www.adidas.com/on/demandware.store/Sites-adidas-US-Site/en_US/MiAccount-Register/')[1]

split()方法的逻辑是:用你指定的那段长URL字符串去切割link2的内容,如果这段字符串根本不在link2里,split只会返回一个只有1个元素的列表。这时候你硬要取索引[1],自然就会触发IndexError: list index out of range——毕竟列表里只有索引0的元素嘛。

至于为啥程序能跑一段时间才炸?大概率是这两种情况:

  • 前几次请求时,你拿到的link2内容里确实包含那段阿迪达斯的注册链接片段,split后能得到至少两个元素,所以取[1]没问题。
  • 运行一阵后,要么是网站的反爬机制盯上你了(比如请求太频繁被限制,返回的页面内容变了),要么是阿迪达斯的页面结构悄悄更新了,导致link2里再也找不到那段用来分割的字符串,split后的列表就只剩一个元素,一取[1]就报错。

怎么修复?给你几个实用方案

  • 先做检查再取值:别直接硬取索引,先判断split后的列表长度够不够。比如改成这样:
    split_parts = link2.split('https://www.adidas.com/on/demandware.store/Sites-adidas-US-Site/en_US/MiAccount-Register/')
    if len(split_parts) >= 2:
        link2 = split_parts[1]
    else:
        # 这里可以加容错逻辑,比如打印当前的link2内容看看啥情况,或者跳过这次循环
        print(f"分割失败啦,当前link2的内容是: {link2}")
        continue
    
  • 对付反爬:如果是被网站限制了,试试加个像样的User-Agent请求头模拟浏览器、给请求加个时间间隔(比如用time.sleep(1)),或者换个代理IP,降低被识别的概率。
  • 换更靠谱的解析方式:别依赖固定字符串分割这种“硬编码”的方式,改用BeautifulSoup或者lxml这类HTML解析库,根据页面的标签结构(比如a标签的href属性)来提取链接,就算页面小改,也不容易崩。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:22:40