python中的KeyError说KeyError:'value'

时间:2018-01-25 16:45:52

标签: python python-requests lxml.html

我想在twitter登录页面中获取隐藏的元素。我按照一个程序来简单地获取该页面中的隐藏元素。但问题是,当我试图获得这些元素的价值时,我得到了关键错误。代码是:

    import requests, lxml.html
from bs4 import BeautifulSoup
s = requests.session()
login = s.get('https://twitter.com/login')
login_html = lxml.html.fromstring(login.text)
hidden_inputs = login_html.xpath(r'//form//input[@type="hidden"]')
form = {x.attrib["name"]: x.attrib["value"] for x in hidden_inputs}
print(form)

我在x.attrib ['value']收到错误。如何纠正这个?

3 个答案:

答案 0 :(得分:1)

以下是您将获得的(某些)对象的示例:

<InputElement 1a62c5ef778 name='ui_metrics' type='hidden'>

没有&#34;价值&#34;键。

如果你打印这个:

for x in hidden_inputs:
     print(x.attrib)

然后您将能够看到哪些标签具有值:

{'type': 'hidden', 'name': 'authenticity_token', 'value': '7fca6a14828cd425dad8437cc291687fc2ff1f96'}

因此,您必须明确检查具有值的那些

答案 1 :(得分:1)

enter image description here

我使用google devtools检查twitter登录页面并获取此图片。最后2个输入要么没有值,要么它不是键值对,所以我想这就是你得到错误的原因。

答案 2 :(得分:0)

此错误表示hidden_​​inputs的成员x不是包含键&#34;值&#34;的字典。您应该打印出hidden_​​input以查看其元素,并确保它们是包含键&#34;值&#34;的字典。