zoukankan      html  css  js  c++  java
  • 爬虫

    简介

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

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

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

    安装

    1 pip3 install scrapy-redis

    配置

    连接redis

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

    或者:

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

    去重

    1 DUPEFILTER_KEY = 'dupefilter:%(timestamp)s'
    2 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'

    调度器配置

     1 SCHEDULER = "scrapy_redis.scheduler.Scheduler"
     2  
     3 DEPTH_PRIORITY = 1  # 广度优先
     4 # DEPTH_PRIORITY = -1 # 深度优先
     5 SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'  # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)
     6  
     7 # 广度优先
     8 # SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.FifoQueue'  # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)
     9 # 深度优先
    10 # SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.LifoQueue'  # 默认使用优先级队列(默认),其他:PriorityQueue(有序集合),FifoQueue(列表)、LifoQueue(列表)
    11 SCHEDULER_QUEUE_KEY = '%(spider)s:requests'  # 调度器中请求存放在redis中的key
    12  
    13 SCHEDULER_SERIALIZER = "scrapy_redis.picklecompat"  # 对保存到redis中的数据进行序列化,默认使用pickle
    14  
    15 SCHEDULER_PERSIST = False  # 是否在关闭时候保留原来的调度器和去重记录,True=保留,False=清空
    16 SCHEDULER_FLUSH_ON_START = True  # 是否在开始之前清空 调度器和去重记录,True=清空,False=不清空
    17 # SCHEDULER_IDLE_BEFORE_CLOSE = 10  # 去调度器中获取数据时,如果为空,最多等待时间(最后没数据,未获取到)。
    18  
    19  
    20 SCHEDULER_DUPEFILTER_KEY = '%(spider)s:dupefilter'  # 去重规则,在redis中保存时对应的key
    21  
    22 # 优先使用DUPEFILTER_CLASS,如果么有就是用SCHEDULER_DUPEFILTER_CLASS
    23 SCHEDULER_DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'  # 去重规则对应处理的类
  • 相关阅读:
    简要概括java技术体系
    我的学习之旅
    Ubuntu18.04系统执行语句时出现错误Failed to load module "canberra-gtk-module"
    USRPX310 在GNU Radio上更改通道A或B
    ubuntu18.04 安装UHD+GNU Radio教程
    安装WIN10+Ubuntu18.04安装教程(实测有效)
    信道编码
    IQ基础
    清除LabVIEW中波形图表或波形图中的历史数据
    LabVIEW中的波形图表(Chart)与波形图(Graph)
  • 原文地址:https://www.cnblogs.com/zhaohuhu/p/9264158.html
Copyright © 2011-2022 走看看