BeautifulSoup4 获取输入 'value' 抛出一个好的代码错误?

BeautifulSoup4 get input 'value' throws an error with good code?

print [(element['name'], element['value']) for element in soup.find_all('input')]

我复制了这段代码来获取输入的值,但它抛出了这个错误:

 File "messager.py", line 116, in main
   print [(element['name'], element['value']) for element in soup.find_all('input')]
 File "C:\PYTHON27\lib\site-packages\bs4\element.py", line 905, in __getitem__
   return self.attrs[key]
KeyError: 'value'

如果我只提供 name,就可以了。我尝试了其他几个版本,但它仍然给我相同的 value 键错误。只是好像没有 return value

无论哪种方式,如果我搜索所有 'inputs'(一个结果的示例),这就是完全 return 的内容:

<input id="Token" name="data[Token][key]" type="hidden" value="152a1f397548bfecbb09581670734bf0403bdf63"/>

所以它确实找到了 'inputs' 但它无法获取值。

关于为什么会发生这种情况有什么想法吗?

可能有 input 个元素没有设置 value 属性。

您可以让 find_all() 知道您只需要设置了 valuename 属性的输入:

soup.find_all("input", {"name": True, "value": True})