CookieMiddleware

class scrapy.downloadermiddlewares.cookies.CookieMiddlewar

该中间件使得爬取需要cookie(例如使用session)的网站成为了可能。 其追踪了web server发送的cookie,并在之后的request中发送回去, 就如浏览器所做的那样.

以下设置可以用来配置cookie中间件:

  • COOKIES_ENABLED
  • COOKIES_DEBUG

单spider多cookie session

Scrapy通过使用 cookiejar Request meta key来支持单spider追踪多cookie session。 默认情况下其使用一个cookie jar(session),不过您可以传递一个标示符来使用多个。

注意这个标识符(即下面代码中的'i'),这里并不是说使用的cookie就是‘i’,而是第i个cookie!!'cookiejar'是meta的特殊关键字,不能以单纯的dict来看待。

cookie是追踪session的,会在request的过程中发生变化,比如在start_requests的时候模拟登陆,cookie就会记录登录信息,后续使用该cookie的request就

能继续沿用其中的cookie。

例如:

for i, url in enumerate(urls):
yield scrapy.Request("http://www.example.com", meta={'cookiejar': i},
callback=self.parse_page)

需要注意的是 cookiejar meta key不是”黏性的(sticky)”。 您需要在之后的request请求中接着传递。

def parse_page(self, response):
# do some processing
return scrapy.Request("http://www.example.com/otherpage",
meta={'cookiejar': response.meta['cookiejar']},
callback=self.parse_other_page)

COOKIES_ENABLED

默认: True

是否启用cookiesmiddleware。如果关闭,cookies将不会发送给web server。

COOKIES_DEBUG

默认: False

如果启用,Scrapy将记录所有在request(cookie 请求头)发送的cookies及response接收到的cookies(set-cookie接收头)

下面是启用COOKIES_DEBUG的记录样例:

2011-04-06 14:35:10-0300 [scrapy] INFO: Spider opened
2011-04-06 14:35:10-0300 [scrapy] DEBUG: Sending cookies to: <GET http://www.diningcity.com/netherlands/index.html>
Cookie: clientlanguage_nl=en_EN
2011-04-06 14:35:14-0300 [scrapy] DEBUG: Received cookies from: <200 http://www.diningcity.com/netherlands/index.html>
Set-Cookie: JSESSIONID=B~FA4DC0C496C8762AE4F1A620EAB34F38; Path=/
Set-Cookie: ip_isocode=US
Set-Cookie: clientlanguage_nl=en_EN; Expires=Thu, 07-Apr-2011 21:21:34 GMT; Path=/
2011-04-06 14:49:50-0300 [scrapy] DEBUG: Crawled (200) <GET http://www.diningcity.com/netherlands/index.html> (referer: None)
[...]

(翻译加个人理解,若有问题请指正,谢谢)

官方文档:https://doc.scrapy.org/en/1.3/topics/downloader-middleware.html#module-scrapy.downloadermiddlewares.cookies

最新文章

  1. 【Android】wifi开发
  2. javaWeb 使用jsp开发 html过滤标签
  3. 强化学习之 免模型学习(model-free based learning)
  4. Spring 中jdbcTemplate 实现执行多条sql语句
  5. JQuery简单实现锚点链接的平滑滚动
  6. java学习之语句结构
  7. Project Euler:Problem 55 Lychrel numbers
  8. jquery mobile listview列表属性(搜索自动填充检索效果)
  9. poj_1743_Musical Theme(后缀数组)
  10. PHP闭包和高阶函数
  11. vim 高级应用
  12. FusionWidgets Cylinder图
  13. [EXtJS5学习笔记]第一节 Sencha Cmd 学习笔记 简介 Sencha Cmd是什么
  14. 关于我与小组成员逐步升级C代码时的一些感想【第二次作业】
  15. require(&#39;./expample.js).default详解
  16. Ajax技术使用补充
  17. 星型数据仓库olap工具kylin介绍和简单使用示例
  18. 网络文件系统NFS
  19. browserify 不打包某些文件或者把公共文件提取出来教程
  20. Unity动画知识之二:Animator动画状态机

热门文章

  1. 使用BootStrap框架设置全局CSS样式
  2. 团队作业8——第二次项目冲刺(Beta阶段)Day4--5.21
  3. 201521123002《Java程序设计》第7周学习总结
  4. 201521123073 《Java程序设计》第5周学习总结
  5. 201521123006 《Java程序设计》第1周学习总结
  6. Python3.x 和Python2.x 区别
  7. Java课程设计——计算器团队博客
  8. python 浅析对return的理解
  9. bookStore第三篇【用户模块、购买模块、订单模块】
  10. Spring定时器的使用详解