爬虫 - scrapy-redis分布式爬虫

Posted 你与断剑皆遗憾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫 - scrapy-redis分布式爬虫相关的知识,希望对你有一定的参考价值。

简介

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:[email protected]: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  # 去重规则对应处理的类

 

以上是关于爬虫 - scrapy-redis分布式爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy-Redis使用教程&&将现有爬虫修改为分布式爬虫

scrapy-Redis分布式爬虫案例----阳光问政平台爬虫

Python爬虫scrapy-redis分布式实例

爬虫学习 17.基于scrapy-redis两种形式的分布式爬虫

10 给予scrapy-redis的分布式爬虫

基于 Scrapy-redis 的分布式爬虫详细设计