scrapy-redis提供共享的调度器和管道
步骤:
1.修改爬虫文件
-导包 from scrapy_redis.spiders import RedisCrawlSpider
-将爬虫类的父类修改成 RedisCrawlSpider
-***将allow_demains和start_url删掉
-添加一个新的属性
-redis_key=‘’#调度器队列的名称
完善爬虫类的相关代码即可
2.配置文件的编写
指定管道
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 400
}
指定调度器
# 增加了一个去重容器类的配置, 作用使用Redis的set集合来存储请求的指纹数据, 从而实现请求去重的持久化
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 使用scrapy-redis组件自己的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 配置调度器是否要持久化, 也就是当爬虫结束了, 要不要清空Redis中请求队列和去重指纹的set。如果是True, 就表示要持久化存储, 就不清空数据, 否则清空数据
SCHEDULER_PERSIST = True
3.指定数据库:
REDIS_HOST = '192.168.16.247'
REDIS_PORT = 6379
4.修改redis的配置文件
-关闭默认127.0.0.1
-关闭保护模式 protected-mode no
6.结合配置文件启动redis服务
redis-server --conf
7.启动redis客户端
-redis-cli
7.5想调度器中扔入起始url
调度器队列存放在redis中
127.0.0.1:6379>lpush 调度器队列名称 起始url
8.启动执行分布式工程
scrapy crawl fbs