首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError在python中说KeyError:'value‘

KeyError在python中说KeyError:'value‘
EN

Stack Overflow用户
提问于 2018-01-25 16:45:52
回答 3查看 2.4K关注 0票数 1

我正在尝试获取twitter登录页面中的隐藏元素。我遵循了一个简单地获取页面中隐藏元素的过程。但问题是,当我试图得到这些元素的值时,我得到的是关键错误。守则是:

代码语言:javascript
复制
    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‘的错误。如何纠正这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-25 16:53:10

下面是您将获得的对象的一个示例:

代码语言:javascript
复制
<InputElement 1a62c5ef778 name='ui_metrics' type='hidden'>

没有“值”键。

如果你打印这个:

代码语言:javascript
复制
for x in hidden_inputs:
     print(x.attrib)

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

代码语言:javascript
复制
{'type': 'hidden', 'name': 'authenticity_token', 'value': '7fca6a14828cd425dad8437cc291687fc2ff1f96'}

因此,您必须显式地检查是否有值。

票数 1
EN

Stack Overflow用户

发布于 2018-01-25 17:00:27

我使用查看twitter登录页面并获取此图像。最后两个输入要么没有值,要么不是键值对,所以我猜这就是为什么会出现错误。

票数 1
EN

Stack Overflow用户

发布于 2018-01-25 16:51:46

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48448005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档