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 |
以上就是分布式的完整示例