基于redis的分布式爬虫
问题:
(1)为什么原生的scrapy框架不可以自己实现分布式爬虫?
原因有两个:
(1)因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url(调度器不能被共享)
(2)多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(管道不能被共享)
(2)scrapy-redis组件的作用是什么?
它提供了可以被共享的调度器和管道
(3)如何使用scrapy-redis组件来实现分布式爬虫?
其一:基于该组件的RedisSpider类
其二:基于该组件的RedisCrawlSpider类
但是这两种实现分布式爬虫的实现流程是一致的
分布式的实现流程:
1 下载scrapy-redis组件:
pip install scrapy_redis
2 创建工程
3 创建爬虫文件:RedisSpider RedisCrawlSpider
- scrapy genspider -t crawl xxx www.xxx.com
4