Python-使用beautifulsoup提取属性值

发布于 2021-02-02 23:18:07

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

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

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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

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

     output = inputTag[0]['value']
    

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看