亦碎流年 2020-06-09
分布式爬虫是将多台电脑构建成一个机群,然后将爬虫程序部署在机群内的每台电脑上进行执行爬取任务,最终将所有的数据进行
提高爬取效率
由于原生scrapy的五大组件的不能实现共享,数据无法整合,所以必须通过scrapy和scrapy_redis组件结合进行实现
给原生scrapy框架提供可以被共享的管道和调度器
1、基于CrawlSpider创建一个项目:爬取阳光网信息
2、修改爬虫文件:
3、修改配置文件:settings.py
# 增加一个去重容器配置,作用:使用Redis的Set集合存储请求的数据,从而实现去重数据的持久化 DUPEFILTER_CALSS = "scrapy_redis.dupefilter.REPPDupeFilter" # 使用scrapy_redis的调度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 配置调度器是否持久化,即爬虫结束后,是否清除Redis中的请求队列和去重指纹数据,为True时,表示不再对爬取过的数据进行爬取 SCHEDULER_PERSIST = True
4、配置redis的配置文件: redis.conf
# 关闭ip访问限制 #bind 127.0.0.1 ::1 # 关闭保护模式 yes:其他客户端只能读取不能写入数据 no:可读可写 protected-mode no
5、启动redis-server
redis-server 配置文件
scrapy_redis组件安装 : pip install scrapy_redis
由于我们需要使用scrapy_redis组件的实现共享管道和调度器,所以需要继承scrapy_redis中的” RedisCrawlSpider“类
from scrapy_redis.spiders import RedisCrawlSpider class FbsSpider(RedisCrawlSpider): pass
将起始url和域名列表进行注释,添加参数:
# allowed_domains = [‘www.xxx.com‘] # start_urls = [‘http://www.xxx.com/‘] redis_key = "sun" # sun为任意设置