python - pyspider cookies問題,用requests設置cookies成功登錄微博但在pyspider中失敗
問題描述
from pyspider.libs.base_handler import *class Handler(BaseHandler): user_url = 'http://weibo.cn/' crawl_config = {’itag’: ’v1’,’headers’: { ’User-Agent’:’Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1’, 'Host': 'weibo.cn', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh-TW;q=0.8,zh-HK;q=0.6,en-US;q=0.4,en;q=0.2', 'Accept-Encoding': 'gzip, deflate', 'DNT': '1', 'Connection': 'keep-alive'},’cookies’:{'_T_WM':'791e0d5962c38c757bead1a106a4dcc5',' ALF':'1489404939',' SCF':'AmNkSminRmi2L6WiP0tbn2H_p-TOZQIRRTLwEL5OhwHOohm56wHRk_9Jy1w7iXftduUAJihNuU3B-8cYnWBT3Lk.',' SUB':'_2A251modoDeRxGeNG7VEV9ibIyT6IHXVXZCkgrDV6PUJbktBeLXXZkW2HyTgXsruSYnviSU7hXUjfdGTOig..',' SUBP':'0033WrSXqPxfM725Ws9jqgMF55529P9D9W5wqBjzJ2m1XohsTfpMwPVx5JpX5o2p5NHD95Qf1hq0ShqRShzEWs4Dqcjci--fi-i8iK.7i--fi-2Xi-2Ni--fi-2Xi-2Ni--fi-2Xi-2Ni--fi-2Xi-2Ni--fi-zRiKnf',' SUHB':'0tKqtAdy5rivMy',' SSOLoginState':'1486812984' } } @every(minutes=60*24 * 60) def on_start(self):self.crawl(Handler.user_url, callback=self.index_page,method='GET') @config(age=1 * 24 * 60 * 60) def index_page(self, response):print(response.text)
用requests可以實現登錄效果,但是用pyspider是一直訪問的是默認的未登錄的網頁
在crawl_config 和在self.crawl 中設置cookies都不行
問題解答
回答1:建議你用selenium來做, 微博的登入好像要走一遍它的js,反正怎么驗證登入的我是沒看懂
回答2:pyspider 是在同一臺機器上運行嗎?我不確定 cookie 前帶空格有什么不同,分別用 pyspider 和 requests 發送請求到 http://httpbin.org/get 看看請求有什么不同
另外: 0.3.8 版本在調試時,crawl_config 不生效。
