繁体   English   中英

python中的KeyError说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']出现错误。 如何纠正呢?

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

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

没有“值”键。

如果打印此:

for x in hidden_inputs:
     print(x.attrib)

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

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

因此,您必须显式检查确实具有值的值

在此处输入图片说明

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM