您现在的位置是:网站首页> 内容页

scrapy-redis分布式爬虫

  • 八达国际手机版登录
  • 2019-10-01
  • 142人已阅读
简介简介Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(

简介

Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),

并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,

将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。 参考Scrapy-Redis官方github地址

安装

pip3 install scrapy-redis

配置

连接redis

REDIS_HOST = "250.100.250.250" # 主机名REDIS_PORT = 9999 # 端口REDIS_PARAMS = {"password":"xxx"} # Redis连接参数 默认:REDIS_PARAMS = {"socket_timeout": 30,"socket_connect_timeout": 30,"retry_on_timeout": True,"encoding": REDIS_ENCODING,})REDIS_ENCODING = "utf-8" # redis编码类型 默认:"utf-8"

或者:

REDIS_URL = "redis://user:pass@hostname:9001" # 连接URL(优先于以上配置)

去重

DUPEFILTER_KEY = "dupefilter:%(timestamp)s"DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

调度器配置

SCHEDULER = "scrapy_redis.scheduler.Scheduler"DEPTH_PRIORITY = 1 # 广度优先# DEPTH_PRIORITY = -1 # 深度优先SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.PriorityQueue" # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)# 广度优先# SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.FifoQueue" # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)# 深度优先# SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.LifoQueue" # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)SCHEDULER_QUEUE_KEY = "%(spider)s:requests" # 调度器中请求存放在redis中的keySCHEDULER_SERIALIZER = "scrapy_redis.picklecompat" # 对保存到redis中的数据进行序列化,默认使用pickleSCHEDULER_PERSIST = False # 是否在关闭时候保留原来的调度器和去重记录,True=保留,False=清空SCHEDULER_FLUSH_ON_START = True # 是否在开始之前清空 调度器和去重记录,True=清空,False=不清空# SCHEDULER_IDLE_BEFORE_CLOSE = 10 # 去调度器中获取数据时,如果为空,最多等待时间(最后没数据,未获取到)。SCHEDULER_DUPEFILTER_KEY = "%(spider)s:dupefilter" # 去重规则,在redis中保存时对应的key# 优先使用DUPEFILTER_CLASS,如果么有就是用SCHEDULER_DUPEFILTER_CLASSSCHEDULER_DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 去重规则对应处理的类

  

, 1, 0, 9);

文章评论

Top