python - 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))
非常感谢您阅读这篇文章。
解决方案
基本上 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 个字符串值打印为value、value2、 索引 0、1 和 2的tds变量。
但不幸的是,这段代码在第 17 行抛出了一个 IndexError : for tr in soup.find_all('tr')[2]
。
对于您的种类信息,您尝试获取的索引值不在您尝试获取“tr”标签元素的汤变量内。因此,它要求您尝试存在于汤变量“tr”标签元素中的其他一些索引值。这就是错误说列表索引超出范围的原因。
推荐阅读
- android - Android 中 websocket 的替代方案
- java - OpenLDAP- DirContextOperations.search((String name, String filter, SearchControls cons))
- python - Python 将用于中断循环的符号附加到列表中的最后一个元素
- java - 在java中初始化多个类对象的数组?
- amazon-web-services - 使用 cfn-init,ec2 实例在
- visual-studio - Crystal Reports for VS 中的共享/全局变量问题
- php - 如何处理用户计划更改
- javascript - 防止事件冒泡
- excel - VBA:使用 Filesystemobject 定位工作簿路径
- c# - 在 c# 中使用 SOAP Webservice,抛出未设置为对象实例的对象引用