Python常见错误:IndexError: list index out of range解决

Oliver
Oliver
发布时间:2026-10-16| 4人浏览过
原创

本文详解Python中IndexError: list index out of range错误的成因与解决方案。当XPath定位不到数据导致列表为空时,直接索引会触发此异常。通过引入try-except异常捕获机制,可将未定位到的元素赋值为None,从而避免程序崩溃,确保爬虫脚本稳定运行。

报错代码

一位粉丝在尝试使用requests库进行网页爬取时,通过遍历XPath定位到的数据列表遇到了报错。当时他感到非常困惑并向我求助,在协助他解决问题后,我将这一过程整理成文,希望能帮助更多遇到相同问题的开发者。

import requests
from lxml import etree

text = requests.get("https://www.baidu.com").content.decode()

html = etree.HTML(text)

div_divst = html.xpath("//div")
for div in div_divst:
    title = div.xpath("@title")[0]
    url = div.xpath("@url")[0]

具体的报错信息如下:

IndexError: list index out of range

报错翻译

该报错信息的中文含义为:

索引错误:列表索引超出范围

报错原因

出现“list index out of range”错误通常由以下两种情况导致:

  • 访问的下标数值超出了列表的实际长度范围。
  • 目标列表为空,内部没有任何元素可供访问。

在上述粉丝的爬虫代码中,根本原因在于XPath表达式未能成功定位到任何数据,导致返回的列表为空。此时若尝试直接访问列表的第一个元素(如list[0]),便会触发索引越界报错。按照下文提供的方法进行处理即可解决该问题。

解决方法

建议采用异常捕获机制来处理XPath定位过程。当定位失败引发报错时,通过捕获异常将title和url变量统一赋值为None,从而保证程序继续执行:

import requests
from lxml import etree

text = requests.get("https://www.baidu.com").content.decode()

html = etree.HTML(text)

div_divst = html.xpath("//div")
for div in div_divst:
    try:
        title = div.xpath("@title")[0]
        url = div.xpath("@url")[0]
    except:
        title = None
        url = None

问题已协助解决。

总结

至此,关于Python常见错误IndexError: list index out of range的解决方法介绍完毕。如需了解更多相关Python IndexError: list index out of range的内容,建议搜索本站历史文章或继续浏览后续相关文章。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。