如何从scrapy响应获取cookie并将cookie设置为下一个请求?
我禁用了默认Scrapy cookie选项,因此我必须手动设置它。
COOKIES_ENABLED = False
COOKIES_DEBUG = True
现在,我需要设置cookie作为同一站点的响应接收的值。 我可以像下面那样获取cookie,
cookie = response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=")
现在我正试图将它设置为表单请求
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)
.
.
.
所以我无法设置cookie。我是否还需要设置其他值或可能是什么问题?
Cookies参数仅在您将COOKIES_ENABLED设置为True时起作用,因为CookiesMiddleware处理它。
因此,您必须在标题上手动设置它:
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)
如果您禁用了Cookie,我认为您无法使用Cookie。
链接地址: http://www.djcxy.com/p/33259.html上一篇: How to get cookie from scrapy response and set the cookie to the next request?