2016-04-06 12 views
6

Ho disabilitato l'opzione cookie Scrapy di default, quindi devo impostarla manualmente.Come ottenere cookie dalla risposta di scrapy e impostare il cookie sulla prossima richiesta?

COOKIES_ENABLED = False 
COOKIES_DEBUG = True 

Ora, ho bisogno di impostare cookie con il valore ricevuto come risposta dello stesso sito. Posso in grado di ottenere il cookie come sotto,

cookie = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=") 

ora sto cercando di impostare il modulo di richiesta da

FormRequest.from_response(response, 
       formdata={"username": "asldkfs", "pass": "slskd"}, 
       cookies={cookie[0]:cookie[1]}, 
       meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}, 
       callback=self.redirection) 

def redirection(self,response): 
    self.log("redirection") 
    self.log(response.headers)    
    self.log("Cookie2") 
    cook1 = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=") 
    self.log(cook1)   
    self.log("end cookie2") 
    return Request("http://something.net/some/sa/"+response.headers.getlist('Location')[0],cookies={cook1[0]:cook1[1]}, 
     callback=self.check_login_response) 

. 
. 
. 

Quindi non ho potuto impostare la cookie.Do ho bisogno di impostare qualsiasi altro valore o quale potrebbe essere il problema?

risposta

1

Penso che non potresti lavorare con i cookie se lo hai disabilitato.

2

L'argomento cookie funziona solo se COOKIES_ENABLED è impostato su True, poiché CookiesMiddleware lo gestisce.

Quindi è necessario impostare manualmente sulle intestazioni:

cookie = response.headers.getlist('Set-Cookie')[0].split(';')[0] 

FormRequest.from_response(response, 
      formdata={"username": "asldkfs", "pass": "slskd"}, 
      headers={'Cookie': cookie}, # <--- 
      meta = {'dont_redirect': True,'handle_httpstatus_list': [302]}, 
      callback=self.redirection) 
Problemi correlati