我想在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']收到错误。如何纠正这个?
答案 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)
答案 2 :(得分:0)
此错误表示hidden_inputs的成员x不是包含键&#34;值&#34;的字典。您应该打印出hidden_input以查看其元素,并确保它们是包含键&#34;值&#34;的字典。