我正在尝试获取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‘的错误。如何纠正这个问题?
发布于 2018-01-25 16:53:10
下面是您将获得的对象的一个示例:
<InputElement 1a62c5ef778 name='ui_metrics' type='hidden'>没有“值”键。
如果你打印这个:
for x in hidden_inputs:
print(x.attrib)然后,您将能够看到哪些标记具有值:
{'type': 'hidden', 'name': 'authenticity_token', 'value': '7fca6a14828cd425dad8437cc291687fc2ff1f96'}因此,您必须显式地检查是否有值。
发布于 2018-01-25 17:00:27

我使用查看twitter登录页面并获取此图像。最后两个输入要么没有值,要么不是键值对,所以我猜这就是为什么会出现错误。
发布于 2018-01-25 16:51:46
此错误表示hidden_inputs的成员x不是包含键"value“的字典。您应该打印出hidden_inputs以查看其元素,并确保它们是包含键"value“的字典。
https://stackoverflow.com/questions/48448005
复制相似问题