分布式爬虫scrapy-redis
2019-01-24 18:49
183 查看
分布式爬虫Scrapy-Redis
分布式爬虫是由一组通过网络进行通信、为了完成共同的爬虫任务而协调工作的计算机节点组成的系统。分布式爬虫是将多台主机组合起来,共同完成一个爬取任务,大大提高爬取效率。
调度器扩展多个,对应的下载器也扩展多个,但是保证爬取的队列是惟一的,也就是共享爬取队列。并且应该要保证,一个调度器调度一个请求以后,其他调度器不会重复调度这个请求。
Scrapy-Redis
Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件。安装如下:
pip install scrapy-redis
Scrapy-redis提供了下面四种组件(components):(四种组件意味着这四个模块都要做相应的修改)
- Scheduler(调度器)
- Duplication Filter(去重)
- Item Pipeline(管道)
- Base Spider(爬虫类)
安装reids
pip install redis
修改redis配置文件redis.windows.conf
修改 bind 127.0.0.1 为 bind 0.0.0.0 ,这样Slave端才能远程连接到Master端的Redis数据库。
测试Slave端远程连接Master端
Slave端启动redis-cli -h master端ip, -h 参数表示连接到指定主机的redis数据库 。
实现分布式步骤
Scrapy-Redis分布式的实现是较为简单的,核心步骤只需三步:
-
将爬虫主文件中继承自Scrapy中的scrapy.Spider 或 CrawlSpider 替换成 Scrapy-Redis的 RedisSpider 或 RedisCrawlSpider。
-
初始的start_urls改为redis_key。
-
在settings.py文件中修改Scrapy自带的调度器类和去重类为Scrapy-Redis提供的类
SCHEDULER = "scrapy_redis.scheduler.Scheduler" DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" SCHEDULER_PERSIST = True
-
在settings.py文件中配置Redis(两种方式)
- 单独配置(Scrapy-Redis优先使用)
REDIS_URL = redis://[password]@host:port
- 分开配置
# redis master端ip REDIS_HOST = '127.0.0.1' # redis master端的端口 REDIS_PORT = 6379 # redis master端的密码 'foobared' 是redis的默认密码 REDIS_PASSWORD = 'foobared'
相关文章推荐
- scrapy-redis 更改队列和分布式爬虫
- 使用scrapy,redis, mongodb实现的一个分布式网络爬虫
- Scrapy基于scrapy_redis实现分布式爬虫部署
- 爬虫必备—scrapy-redis(分布式爬虫)
- (5)分布式下的爬虫Scrapy应该如何做-windows下的redis的安装与配置
- 基于Python,scrapy,redis的分布式爬虫实现框架
- scrapy-redis实现爬虫分布式爬取分析与实现
- 基于scrapy和redis的分布式爬虫环境搭建
- 【Scrapy框架基于scrapy-redis实现分布式爬虫】
- 第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中
- scrapy-redis分布式爬虫原理分析
- Python之Scrapy框架Redis实现分布式爬虫详解
- 基于Python+scrapy+redis的分布式爬虫实现框架
- Redis-Scrapy分布式爬虫:当当网图书为例
- Scrapy_redis部署分布式爬虫
- Scrapy-redis爬虫分布式爬取的分析和实现
- 基于Python,scrapy,redis的分布式爬虫实现框架
- scrapy-redis实现爬虫分布式爬取分析与实现
- 基于Scrapy_redis部署scrapy分布式爬虫