python之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,所以调度和下载功能在各自的主机上完成。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值