我已经禁用了默认剪贴板选项,所以我必须手动设置它。
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。我还需要设置任何其他值吗?或者可能是什么问题?
4条答案
按热度按时间beq87vna1#
cookie参数只有在COOKIES_ENABLED设置为True时才有效,因为CookiesMiddleware会处理它。
因此,您必须在标题上手动设置它:
gj3fmq9x2#
answer from Paulo Romeira是正确的,只是缺少从字节到字符串的解析:
vhmi4jdf3#
我认为如果您禁用它,您就无法使用Cookie。
q5iwbnjs4#
您还可以使用创建cookiejars并在那里处理cookie的概念(用于在scrapy中维护会话),使用官方scrapy文档中记录的以下策略:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#std:reqmeta-cookiejar
另请参阅此stackoverflow问题:Scrapy - how to manage cookies/sessions