2017-07-26 27 views
0

我想用Scrapy登錄Facebook。從響應Scrapy FormRequest AtrributeError:'str'對象沒有屬性'編碼'

我已經確定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。我很確定這只是我的弱谷歌,但我無法確定,如何前進。

回答

4

from_response方法要求第一個參數是response對象而不是url,請檢查docs,這裏有一個使用FormRequest.from_response模擬用戶登錄的示例。

相關問題