“通过之前的分析,我们已经了解了表单数据应包含的信息:账号和密码信息,再加3个隐藏中的信息。”
“信息:账号和密码信息,再加3个隐藏中的信息。先把这些信息收集到一个字典中,然后使用这个表单数据字典构造FormRequest对象:”
“ >>> # 先提取3 个隐藏中包含的信息,它们在
“通过之前的分析,我们已经了解了表单数据应包含的信息:账号和密码信息,再加3个隐藏中的信息。”
“信息:账号和密码信息,再加3个隐藏中的信息。先把这些信息收集到一个字典中,然后使用这个表单数据字典构造FormRequest对象:”
“ >>> # 先提取3 个隐藏中包含的信息,它们在中
>>> sel = response.xpath('//div[@style]/input')
>>> sel
[,
,
]
>>> # 构造表单数据字典
>>> fd = dict(zip(sel.xpath('./@name').extract(), sel.xpath('./@value').extract()))
>>> fd
{'_formkey': '432dcb0c-0d85-443f-bb50-9644cfeb2f2b',
'_formname': 'login',
'_next': '/'}
>>> # 填写账号和密码信息
>>> fd['email'] = '[email protected]'
>>> fd['password'] = '12345678'
>>> fd
{'_formkey': '432dcb0c-0d85-443f-bb50-9644cfeb2f2b',
'_formname': 'login',
'_next': '/',
'email': '[email protected]',
'password': '12345678'}
>>> from scrapy.http import FormRequest
>>> request = FormRequest('http://example.webscraping.com/user/login', formdata=fd)”
“以上是直接构造FormRequest对象的方式,除此之外还有一种更为简单的方式,即调用FormRequest的from_response方法。调用时需传入一个Response对象作为第一个参数,该方法会解析Response对象所包含页面中的