赞
踩
1.概念:分布式爬虫
由于需要爬取的数据量大,任务多,一台机器效率太低,需要多台机器共同协作处理。分布式爬虫将多台主机组合起来, 共同完成一个爬取任务,快速高效地提高爬取效率。
分布式爬虫可以分为若干个分布式层级,不同的应用可能由其中部分层级构成。
大型分布式爬虫主要分为以下3个层级:分布式数据中心、分布式抓取服务器及分布式爬虫程序。整个爬虫系统由全球多个分布式数据中心共同组成,每个数据中心又由多台高速网络连接的抓取服务器构成,而每台服务器又可以部署多个爬虫程序。通过多层级的分布式爬虫体系,才可能保证抓取数据的及时性和全面性。
作为一个分布式爬虫,是需要有一个Master端(核心服务器)的,在Master端,会搭建一个数据库,用来存储start_urls、request、items。Master的职责是负责url指纹判重,Request的分配,以及数据的存储(一般在Master端会安装一个mongodb用来存储items)。出了Master之外,还有一个角色就是slaver(爬虫程序执行端),它主要负责执行爬虫程序爬取数据,并将爬取过程中新的Request提交到Master的数据库中。
如上图,假设我们有四台电脑:A, B, C, D ,其中任意一台电脑都可以作为 Master端 或 Slaver端。整个流程是:
2.背景
Scrapy 是一个通用的爬虫框架,但是不支持分布式。有能人改变了scrapy的队列调度,将起始的网址从start_urls里分离出来,改为从redis数据库读取,多个客户端可以同时读取同一个redis,从而实现了分布式的爬虫。
Redis,非关系型数据库,Key-Value形式存储,结构灵活,是内存中的数据结构存储系统,处理速度快,性能好;并且能提供队列、集合等多种存储结构,方便队列维护。
Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。通过Scrapy-re
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。