KeyError in python saying KeyError : 'value'

KeyError in python saying KeyError : 'value'

我正在尝试获取 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'] 处遇到错误。如何纠正?

此错误表明 hidden_inputs 的成员 x 不是包含键 "value" 的字典。您应该打印出 hidden_inputs 以查看其元素,并确保它们是包含键 "value".

的字典

这是您将获得的(一些)对象的示例:

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

没有 "value" 键。

如果你打印这个:

for x in hidden_inputs:
     print(x.attrib)

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

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

所以你必须明确检查那些确实有值的

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