我正在尝试使用Scrapy登录Facebook。
我已经确定Facebook的移动版本没有javascript,所以我正在使用它。
相关代码是
from loginform import fill_login_form
from scrapy.http import FormRequest
def parse(self, response):
"""Login to Facebook then pass on"""
payload = fill_login_form(
response.request.url, # https://m.facebook.com
response.body,
self.login_user,
self.login_pass
)
return FormRequest.from_response(
response.request.url,
formdata=payload,
formid='login-form',
callback=self.after_login
)
我得到的错误是:
File "/XXX/scraps/scraps/spiders/fb.py", line 44, in parse
return FormRequest.from_response(response.request.url, formdata=payload, formid='login-form', callback=self.after_login)
File "/XXX/venv/lib/python3.6/site-packages/scrapy/http/request/form.py", line 42, in from_response
kwargs.setdefault('encoding', response.encoding)
AttributeError: 'str' object has no attribute 'encoding'
Scrapy处于默认设置。
我希望我的蜘蛛登录m.facebook.com。我很确定这只是我的弱谷歌,但我无法确定,如何继续前进。
答案 0 :(得分:5)
from_response
方法要求第一个参数为response
对象而不是网址,请检查docs,这是一个使用FormRequest.from_response
来模拟用户登录。