专栏首页抠抠空间scrapy-redis分布式爬虫

scrapy-redis分布式爬虫

简介

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中的key

SCHEDULER_SERIALIZER = "scrapy_redis.picklecompat"  # 对保存到redis中的数据进行序列化,默认使用pickle

SCHEDULER_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_CLASS
SCHEDULER_DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'  # 去重规则对应处理的类

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微服务架构基于Nginx、Node.js和Redis的Docker工作流

    美的让人心动
  • celery 定时任务实现

    王兵
  • 【应急响应】redis未授权访问致远程植入挖矿脚本(完结篇)

    aerfa
  • 高并发风控技术解密(下)

    美的让人心动
  • centos7安装jdk,tomcat,nginx,redis,fastDFS的步骤

    挑战者
  • Bedtools使用简介

    生信宝典
  • 【应急响应】redis未授权访问致远程植入挖矿脚本(攻击篇)

    aerfa
  • 网关 Spring-Cloud-Gateway 源码解析 —— 网关初始化

    芋道源码
  • Redis集群方案怎么做?大牛给你介绍五种方案!

    美的让人心动
  • php扩展模块安装

    叶瑾

扫码关注云+社区

领取腾讯云代金券