使用 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中文网其他相关文章!