技术知识库

目标网络完善的客服机制,能快速解决您的疑问。


如何使用多主机协同,提高爬虫的抓取效率

2019-04-08 12:34:38   来源:   点击:

  网络爬虫抓取需要大批量同时抓取网络信息,一般的抓取形式达不到要求。那么如何加快Python爬虫的抓取速度呢?就需要采用多主机协同,提高爬虫的抓取效率。python分布式爬虫框架,能有效解决这个问题。
 

  Scrapy单机爬虫中有一个本地抓取队列Queue,这一队列是借助deque模块进行的。假如新的Request生成就会放到队列里面,随后Request被Scheduler调度。之后,Request交给Downloader执行爬取,简单的调度架构如下图所示。
 

 

  如果两个Scheduler同时从队列里面取Request,每个Scheduler都有其对应的Downloader,那么在带宽足够、正常爬取且不考虑队列存取压力的情况下,爬取效率会有什么变化?没错,爬取效率会翻倍。
 

  这样,Scheduler可以扩展多个,Downloader也可以扩展多个。而爬取队列Queue必须始终为一个,也就是所谓的共享爬取队列。这样才能保证Scheduer从队列里调度某个Request之后,其他Scheduler不会重复调度此Request,就可以做到多个Schduler同步爬取。这就是分布式爬虫的基本雏形,简单调度架构如下图所示。
 

 
  我们需要做的就是在多台主机上同时运行爬虫任务协同爬取,而协同爬取的前提就是共享爬取队列。这样各台主机就不需要各自维护爬取队列,而是从共享爬取队列存取Request。但是各台主机还是有各自的Scheduler和Downloader,所以调度和下载功能分别完成。如果不考虑队列存取性能消耗,爬取效率还是会成倍提高。

 

上一篇:SEO常见术语
下一篇:你知道什么是动态IP吗?

关闭
18076763811
动态IP