一尘不染

Python-使用beautifulsoup提取属性值

python

我试图在网页上的特定“输入”标签中提取单个“值”属性的内容。我使用以下代码:

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文档中我了解到字符串在这里也不应该是一个问题…但是我没有专家,我可能会误解了。


阅读 1046

收藏
2020-02-16

共1个答案

一尘不染

.findAll()返回所有找到的元素的列表,因此:

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

inputTag是一个列表(可能仅包含一个元素)。根据你的确切要求,你应该执行以下操作:

 output = inputTag[0]['value']

或使用.find()仅返回一个(第一个)找到的元素的方法:

 inputTag = soup.find(attrs={"name": "stainfo"})
 output = inputTag['value']
2020-02-16