Scrapy之scrapy-redis分布式爬虫
scrapy-redis
是scrapy
框架基于redis
数据库的组件,用于scrapy
项目的分布式开发和部署。
特征
分布式爬取
您可以启动多个spider工程,相互之间共享单个redis
的requests
队列。最适合广泛的多个域名网站的内容爬取。
分布式数据处理
爬取到的scrapy
的item
数据可以推入到redis
队列中,这意味着你可以根据需求启动尽可能多的处理程序来共享item
的队列,进行item
数据持久化处理
Scrapy
即插即用组件
Scheduler
调度器 + Duplication
复制 过滤器,Item Pipeline
,基本spider
实现流程
安装组件
1 | pip install scrapy-redis |
redis
修改配置文件
1 | - 注释该行:bind 127.0.0.1,表示可以让其他ip访问redis |
爬虫文件
将爬虫类的父类修改成基于RedisSpider
或者RedisCrawlSpider
。注意:如果原始爬虫文件是基于Spider
的,则应该将父类修改成RedisSpider
,如果原始爬虫文件是基于CrawlSpider
的,则应该将其父类修改成RedisCrawlSpider
; 注释或者删除start_urls
列表,且加入redis_key
属性,属性值为scrpy-redis
组件中调度器队列的名称
1 | # -*- coding: utf-8 -*- |
配置文件
1 | # 开启管道 |
启动redis
服务器
使用修改后的redis
配置文件来启动redis
服务
1 | redis-server 配置文件 |
启动redis
客户端
1 | redis-cli |
运行爬虫
要进入爬虫目录,使用一下命令运行爬虫文件
1 | scrapy runspider 爬虫文件名 |
开始爬取
在redis
客户端中丢入要爬取的页面起始url
1 | lpush diandianredis https://www.diandian100.cn |
以上就是分布式的完整示例