首页 >后端开发 >Python教程 >使用 BeautifulSoup 提取属性值时如何解决类型错误:列表索引必须是整数,而不是 str?

使用 BeautifulSoup 提取属性值时如何解决类型错误:列表索引必须是整数,而不是 str?

Linda Hamilton
Linda Hamilton原创
2024-12-24 17:27:14478浏览

How to Resolve TypeError: list indices must be integers, not str, When Extracting Attribute Values with BeautifulSoup?

使用 BeautifulSoup 提取属性值:解决 Python 中的 TypeError

寻求从网页上的特定“输入”标签,您决定调用 BeautifulSoup。使用以下代码,您开始执行您的任务:

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTag = soup.findAll(attrs={"name": "stainfo"})

output = inputTag['value']

print str(output)

但是,您的努力受到了神秘的 TypeError 的阻碍:列表索引必须是整数,而不是 str。当您在 BeautifulSoup 文档中寻求安慰时,绝望油然而生,但它的复杂性让您感到困惑。让我们来揭开这个谜团。

find_all() 方法返回所有匹配元素的列表。在您的情况下, input_tag 是一个列表,可能只包含一个元素。后续行,output = inputTag['value'],尝试访问与列表的第一个元素关联的字典的值。由于列表索引应该是整数,因此此操作失败并报告错误。

要纠正此问题,您有两个选项:

选项 1:选择第一个元素

使用显式选择列表中的第一个元素索引:

input_tag = soup.find_all(attrs={"name": "stainfo"})
output = input_tag[0]['value']

选项 2:使用 find() 方法

使用 find() 方法,该方法仅返回第一个匹配元素:

input_tag = soup.find(attrs={"name": "stainfo"})
output = input_tag['value']

通过实施这些方法中的任何一种,您都可以有效地提取所需的属性值并继续您的 BeautifulSoup 之旅,而无需进一步障碍。

以上是使用 BeautifulSoup 提取属性值时如何解决类型错误:列表索引必须是整数,而不是 str?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn