我试图在网页上的特定“输入”标签中提取单个“值”属性的内容。我使用以下代码:
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文档中我了解到字符串在这里也不应该是一个问题…但是我没有专家,我可能会误解了。
.findAll()返回所有找到的元素的列表,因此:
.findAll()
inputTag = soup.findAll(attrs={"name" : "stainfo"})
inputTag是一个列表(可能仅包含一个元素)。根据你的确切要求,你应该执行以下操作:
inputTag
output = inputTag[0]['value']
或使用.find()仅返回一个(第一个)找到的元素的方法:
.find()
inputTag = soup.find(attrs={"name": "stainfo"}) output = inputTag['value']