来自响应的Scrapy FormRequest AtrributeError:'str'对象没有属性'encoding'

jul*_*lka 0 facebook login scrapy python-3.x

我正在尝试使用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
    )
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

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'
Run Code Online (Sandbox Code Playgroud)

Scrapy处于默认设置.

我希望我的蜘蛛登录m.facebook.com.我很确定这只是我的弱谷歌,但我无法确定,如何前进.

小智 5

from_response方法要求第一个参数是一个response对象而不是url,请检查文档,这是一个使用FormRequest.from_response模拟用户登录的示例.