python - BeautifulSoup4索引错误: list index out of range?

标签 python beautifulsoup

我正在学习 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' 迭代变量,找到所有 'tr' 标签元素的索引值为 2,然后在 for 循环内部创建了一个 tds 变量,用于存储每个 'tr' 的返回值 通过查找每个 'tr' 迭代变量内的所有 'td' 标签元素来迭代变量。 然后代码尝试将 3 个字符串值打印为 valuevalue2value3,其中代码尝试显示索引 0、1 和 2tds 变量的文本

但不幸的是,此代码在第 17 行抛出 IndexError :for tr in soup.find_all('tr')[2] 对于您的信息,您尝试获取的索引值不在您尝试获取 'tr' 标签元素的 soup 变量内部。 因此,它要求您尝试 soup 变量 'tr' 标签元素中存在的其他索引值。 这就是为什么错误提示列表索引超出范围。

关于python - BeautifulSoup4索引错误: list index out of range?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557902/

相关文章:

python - 如何根据时间增量计算特定值的出现次数

python - 二叉树 : How Do Class Instances Link?

Python BeautifulSoup 从 HTML 中获取文本

python - Unicode 提取

python - 如何根据 pandas 数据框列中的用户输入找到最接近的字符串匹配?

python - 如何在需要 python 身份验证的代理服务器后面运行 selenium web 驱动程序

python - Plotly 无法正确显示 y 轴标签

python - 属性错误: 'function' object has no attribute 'find_all' Beautiful Soup

python - BeautifulSoup - 使用 findAll 避免将包含 <br> 的元素视为不同元素

python - 将 BeautifulSoup 元素解析为 Selenium