首页 > 解决方案 > BeautifulSoup4 IndexError:列表索引超出范围?

问题描述

我正在学习 BS4,但我无法弄清楚这段代码的作用以及为什么这段代码会抛出这样的错误:

Traceback (most recent call last):
  File "/home/ubuntu/workspace/Untitled1.py", line 17, in <module>
    for tr in soup.find_all('tr')[3]:
IndexError: list index out of range

使用 bs4 的 python 代码是:

for tr in soup.find_all('tr')[2]:
    tds = tr.find_all('td')
    print("value:%s,value 2:%s,value3:%s" \
        (tds[0].text,tds[1].text,tds[2].text))

非常感谢您阅读这篇文章。

标签: pythonbeautifulsoup

解决方案


基本上 BeautifulSoup 是一个 Python 库,可以帮助您从 HTML 和 XML 文件中提取数据,您所要做的只是应用一些规则来从网页 HTML 文件中提取数据。

for tr in soup.find_all('tr')[2]:
    tds = tr.find_all('td')
    print("value:%s,value 2:%s,value3:%s" \
        (tds[0].text,tds[1].text,tds[2].text))

上面的这段代码只是应用了一些规则,比如对于soup变量中的每个'tr'迭代变量,找到所有索引值为2的'tr'标签元素,然后在 for 循环内部创建了一个tds变量通过在每个“tr”迭代变量中查找所有“td”标签元素来存储每个“tr 迭代变量的返回值。然后代码只是尝试将3 个字符串值打印为valuevalue2 索引 0、1 和 2的tds变量。

但不幸的是,这段代码在第 17 行抛出了一个 IndexError : for tr in soup.find_all('tr')[2] 对于您的种类信息,您尝试获取的索引值不在您尝试获取“tr”标签元素的汤变量内。因此,它要求您尝试存在于汤变量“tr”标签元素中的其他一些索引值。这就是错误说列表索引超出范围的原因。


推荐阅读