scrapy基础知识之 Scrapy-Redis分布式策略:
2024-09-01 02:58:21
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
首先Slaver端从Master端拿任务(Request、url)进行数据抓取,Slaver抓取数据的同时,产生新任务的Request便提交给 Master 处理;
Master端只有一个Redis数据库,负责将未处理的Request去重和任务分配,将处理后的Request加入待爬队列,并且存储爬取的数据。
Scrapy-Redis默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作Scrapy-Redis都已经帮我们做好了,我们只需要继承RedisSpider、指定redis_key就行了。
缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。
最新文章
- 【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】
- 微信浏览器的HTTP_USER_AGENT
- [Unity] Shader(着色器)输入输出和语义
- sharepoint 2013 入门1_ 建立一个网页程序
- 20145305 《Java程序设计》第5周学习总结
- mysql 5.6 binlog组提交1
- linq集合内部赋值
- EasyUI + Spring MVC + hibernate实现增删改查导入导出
- poj 2892 Tunnel Warfare(线段树)
- (转载)JavaScript中的原型和对象机制
- FTP Client
- maven/eclipse搭建ssm(spring+spring mvc+mybatis)
- mysqldump导入导出mysql数据库
- 开发过程中常用到的git命令
- vue学习笔记 计算属性(四)
- nodejs 语法学习(持续更新)
- ASP.NET网络爬虫小研究 HtmlAgilityPack基础,爬取数据保存在数据库中再显示再自己的网页中
- 基于JDK1.8的ArrayList剖析
- python 使用Nginx和uWSGI来运行Python应用
- C语言实现万年历
热门文章
- 关于JSP
- DataContext和ItemSource
- ajax 异步长连接遭遇堵塞,“排序执行请求”的问题解决
- 细谈unity资源管理的设计
- 生成wsdl代理c#代码
- Win8Metro(C#)数字图像处理--2.11图像锐化
- Win10《芒果TV》更新v3.8.0初夏版:全新视觉体验,即刻分享视频
- 零元学Expression Blend 4 - Chapter 12 用实例了解布局容器系列-「Viewbox」
- Visual Studio一直弹出“未将对象引用设置到对象的实例”对话框的处理
- UWP开发-获取设备唯一ID