Python:AttributeError:' ResultSet'对象没有属性' get'

时间:2018-03-01 22:10:15

标签: python beautifulsoup

当我尝试从网站抓取一个值并将其放入有效负载请求时,我收到错误:

AttributeError: 'ResultSet' object has no attribute 'get'

这是我的代码:

resumeURL='url'
response=self.session.get(resumeURL,headers=headers)
soup=BeautifulSoup(response.content, "html.parser")

product=soup.find_all('input',{'name':'_CsrfToken', 'type':'hidden'})
payload = {
    '_CsrfToken':product.get('value')

当我将find_all更改为find时,我收到错误消息:

AttributeError: 'NoneType' object has no attribute 'get'

我做错了什么?

2 个答案:

答案 0 :(得分:1)

直接从美丽的汤documentation中取出:

  

AttributeError:' ResultSet'对象没有属性“foo' - 这通常是因为您希望find_all()返回单个标记或字符串。但是find_all()返回标签和字符串的列表 - 一个ResultSet对象。您需要遍历列表并查看每个列表的.foo。或者,如果您真的只想要一个结果,则需要使用find()而不是find_all()。

因此,如果您想要所有结果 - 而不仅仅是那个 - 您需要遍历所有ResultSet(例如product)并查找每个结果的.get。 如下所示:

for val in product:
  #check the val.get('value') for each member of list
  print val.get('value')

答案 1 :(得分:0)

我认为get方法应该在ResultSet的一个元素中使用(而不是在整个集合中)。我的意思是,你在哪里:

product.get('value')

尝试:

product[0].get('value')