Python爬虫:scrapy管理服务器返回的cookie
【摘要】 1、使用cookie settings.py启用
COOKIES_ENABLED=True # 启用cookie
COOKIES_DEBUG=True # 显示发送和接受的cookie12
2、使用自定义cookie 如果要使用登录验证的cookie,那么可以这样
for url in self.start_urls: yield scrapy.Reque...
1、使用cookie
settings.py启用
COOKIES_ENABLED=True # 启用cookie
COOKIES_DEBUG=True # 显示发送和接受的cookie
- 1
- 2
2、使用自定义cookie
如果要使用登录验证的cookie,那么可以这样
for url in self.start_urls: yield scrapy.Request(url, cookies={"username": "pengshiyu"})
- 1
- 2
3、删除服务器端返回的cookie
有一种情况:服务器端每次都重新写入一个cookie记录你的访问次数,我不希望将这个cookie带入下一个请求
我们知道,服务器端返回的cookie,可以通过以下语句获取
response.headers.get('Set-Cookie')
- 1
这里的headers看起来很像一个字典,那么直接移除试试
response.headers.pop('Set-Cookie')
- 1
理论上应该是可行的,不过我暂时没有成功
scrapy中处理cookie的中间件优先级是700
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
- 1
处理请求cookie
的中间件应该在其之前执行,优先级应该低于700
处理响应cookie
的中间件应该在其之后执行,优先级应该高于700
4、忽略服务器返回的所有cookie
scrapy中,单个spider使用的是一个cookie session,如果单spider使用多cookie session,这样,让每个request请求都是独立的,不就可以忽略服务器再次返回的所有cookie了吗?
默认情况下使用一个cookiejar(session),不过可以传递一个标示符来使用多个。
例如:
def start_requests(self): for i, url in enumerate(urls): yield Request(url, meta={'cookiejar': i}, callback=self.parse_page)
# 在之后的request请求中接着传递
def parse_page(self, response): # do some processing return Request("http://www.example.com/otherpage", meta={'cookiejar': response.meta['cookiejar']}, callback=self.parse_other_page)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/81184860
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)