Scrapy进阶(scrapy-redis)
Scrapy-redis
- 目标
- 了解工作流程
- 把普通爬虫改写分布式爬虫
- Scrapy和Scrapy-redis区别
- Scrapy爬取效率高,具有高度可定制性,不支持分布式
- Scrapy-redis基于redis数据库,运行在Scrapy框架上的一个组件,可以让Scrapy支持分布式策略,支持主从同步
Scrapy-redis框架
- redis存放的内容
- 已爬取的数据
- 待爬取的request对象(set类型)
- 已爬过的request对象(sorted set类型)
- 安装scrapy-redis框架
- pip install scrapy_redis
普通爬虫文件改写成分布式爬虫文件
普通爬虫文件
- 创建Scrapy项目
- 明确爬虫目标 —— start_urls
- 保存数据
分布式爬虫文件
- 改写爬虫文件
- 导入模块
- 继承类
- 把start——urls改为redis_key
- 改写settings文件
# 改写settings文件 # 去重过滤 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 指定Scheduler队列 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 是否在关闭时候保留原来的调度器和去重记录 SCHEDULER_PERSIST = True # 管道 ITEM_PIPELINES = { 'example.pipelines.ExamplePipeline': 300, 'scrapy_redis.pipelines.RedisPipeline': 400, }
- redis里需要lpush key urls