scrapy基础知识之 Scrapy-Redis分布式策略:

Posted hcw_19

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy基础知识之 Scrapy-Redis分布式策略:相关的知识,希望对你有一定的参考价值。

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大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。

以上是关于scrapy基础知识之 Scrapy-Redis分布式策略:的主要内容,如果未能解决你的问题,请参考以下文章

python高级之scrapy-redis

爬虫 之 scrapy-redis组件

python之scrapy模块scrapy-redis使用

小白进阶之Scrapy(基于Scrapy-Redis的分布式以及cookies池)

scrapy-redis分布式爬虫实战

scrapy-redis 和 scrapy 有啥区别