scrapy_redis实现分布式爬虫

分布式爬虫

  • 原理
    多台主机共享1个爬取队列

  • 实现
    重写scrapy调度器(scrapy_redis模块)
    sudo pip3 install scrapy_redis

  • 为什么使用redis
    1、Redis基于内存,速度快
    2、Redis非关系型数据库,Redis中集合,存储每个request的指纹
    3、scrapy_redis安装
    sudo pip3 install scrapy_redis

scrapy_redis详解

  • GitHub地址
    https://github.com/rmax/scrapy-redis

  • settings.py说明
    #重新指定调度器: 启用Redis调度存储请求队列
    SCHEDULER = “scrapy_redis.scheduler.Scheduler”

    #重新指定去重机制: 确保所有的爬虫通过Redis去重
    DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”

    #不清除Redis队列: 暂停/恢复/断点续爬(轻松实现增量爬取)
    SCHEDULER_PERSIST = True

    #优先级队列 (默认)
    SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.PriorityQueue’
    #可选用的其它队列
    #先进先出队列
    SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.FifoQueue’
    #后进先出队列
    SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.LifoQueue’

    #redis管道
    ITEM_PIPELINES = {
    ‘scrapy_redis.pipelines.RedisPipeline’: 300
    }

    #指定连接到redis时使用的端口和地址
    REDIS_HOST = ‘localhost’
    REDIS_PORT = 6379

猜你喜欢

转载自blog.csdn.net/qq_43435274/article/details/103234868