Scrapy-Redis分布式策略:

假设有四台电脑:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端,比如:

  • Master端(核心服务器) :使用 Windows 10,搭建一个Redis数据库,不负责爬取,只负责url指纹判重、Request的分配,以及数据的存储

  • Slaver端(爬虫程序执行端) :使用 Mac OS X 、Ubuntu 16.04、CentOS 7.2,负责执行爬虫程序,运行过程中提交新的Request给Master

  1. 首先Slaver端从Master端拿任务(Request、url)进行数据抓取,Slaver抓取数据的同时,产生新任务的Request便提交给 Master 处理;

  2. Master端只有一个Redis数据库,负责将未处理的Request去重和任务分配,将处理后的Request加入待爬队列,并且存储爬取的数据。

Scrapy-Redis默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作Scrapy-Redis都已经帮我们做好了,我们只需要继承RedisSpider、指定redis_key就行了。

缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。

最新文章

  1. 【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】
  2. 微信浏览器的HTTP_USER_AGENT
  3. [Unity] Shader(着色器)输入输出和语义
  4. sharepoint 2013 入门1_ 建立一个网页程序
  5. 20145305 《Java程序设计》第5周学习总结
  6. mysql 5.6 binlog组提交1
  7. linq集合内部赋值
  8. EasyUI + Spring MVC + hibernate实现增删改查导入导出
  9. poj 2892 Tunnel Warfare(线段树)
  10. (转载)JavaScript中的原型和对象机制
  11. FTP Client
  12. maven/eclipse搭建ssm(spring+spring mvc+mybatis)
  13. mysqldump导入导出mysql数据库
  14. 开发过程中常用到的git命令
  15. vue学习笔记 计算属性(四)
  16. nodejs 语法学习(持续更新)
  17. ASP.NET网络爬虫小研究 HtmlAgilityPack基础,爬取数据保存在数据库中再显示再自己的网页中
  18. 基于JDK1.8的ArrayList剖析
  19. python 使用Nginx和uWSGI来运行Python应用
  20. C语言实现万年历

热门文章

  1. 关于JSP
  2. DataContext和ItemSource
  3. ajax 异步长连接遭遇堵塞,“排序执行请求”的问题解决
  4. 细谈unity资源管理的设计
  5. 生成wsdl代理c#代码
  6. Win8Metro(C#)数字图像处理--2.11图像锐化
  7. Win10《芒果TV》更新v3.8.0初夏版:全新视觉体验,即刻分享视频
  8. 零元学Expression Blend 4 - Chapter 12 用实例了解布局容器系列-「Viewbox」
  9. Visual Studio一直弹出“未将对象引用设置到对象的实例”对话框的处理
  10. UWP开发-获取设备唯一ID