当前位置:   article > 正文

python之scrapy(五)分布式爬虫_scrapy分布式爬虫

scrapy分布式爬虫

Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。

一、分布式爬虫的原理

下面是单机版本的Scrapy框架:

Scrapy单机爬虫中只有一个本地爬取队列Queue,如果新的Request生成,就放到队列里面,随后Request被Scheduler调度。之后Request交给DownLoader执行爬取,简单的调度框架如下图所示:

 

如果两个Scheduler同时从消息队里里面取Request,每个Scheduler都有对应的DownLoader,那么在带宽足够、正常爬取切不考虑队列压力的情况下,爬虫效率就会翻倍。

这样,Sheduler可以扩展为多个,DownLoader也是多个,而爬取队列维持为一个,也就是所谓的共享爬虫队列。这样才能保证Scheduler从队列里面调度某个Request之后,其他的Scheduler不会重复调用该Request,就可以保证多个Scheduler同步爬取。

Scheduler进行调度,而要实现多台服务器共同爬取数据关键就是共享爬取队列。

我们需要做的是在多台主机上同时运行爬虫任务协同爬取,而协同爬取的的前提就是共享爬虫队列。这样各台主机不需要各自维护排重队列,各台主机还是有各自的Sheduler和Downloader,所以调度和下载功能在各自的主机上完成。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/208651
推荐阅读
相关标签
  

闽ICP备14008679号