Scrapy-redis 分布式

  • redis的安装
  • 客户端和服务命令
  • redis数据
  • scrapy-redis分布式原理
  • scrapy部署流程



使用分布式来加快爬的速度。—大数据。

redis的安装

将压缩包解压到指定目录,就安装好了。

配置环境变量

测试是否安装成功,在cmd中输入redis-server:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_ide

客户端和服务命令

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_队列_02


配置文件如下:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_ide_03

redis数据

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_初始化_04


这部分有很多比较详细的文档可以查阅参考。

scrapy-redis分布式原理

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_初始化_05


scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_初始化_06


指纹集合作用和原理:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_分布式_07


任务队列原理:使用的数据结构为有序集合zset,特征是有scores字段。

特点是实时更新顺序,因此可以用来排列任务。

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_队列_08

scrapy部署流程

(一)主机配置
1、导入包

from scrapy_redis import spiders

2、将start_urls注释调,因为scrapy-redis是从redis中读取初始任务的,不需要start_urls:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_队列_09


然后重写类:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_队列_10

3、主机写入初始化redis的初始url列表的代码。

主机:就是使用的哪台电脑上的redis和mongo,哪台电脑就是主机。

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_redis_11


scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_初始化_12


4、在spider中设置读取初始任务的代码,方法如下:

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_分布式_13


这里的redis-key就表示将来项目启动后就会从redis中的这个key所对应的列表中获取url。

5、在settings.py中添加如下配置:

# 这三条主机和从机都要添加:配置调度器和去重指纹集合。
#配置scrapy-redis调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
#配置url去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
#配置优先级队列
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'

##端口号
REDIS_PORT = 6379
MONGO_DATABASE = 'caixi'


#主机和从机不一样的:
#主机名
REDIS_HOST = 'localhost'
MONGO_URI = 'localhost'
#【主机才负责初始化redis的任务列表】
#从机里面:	主机ip要确定
REDIS_HOST = '目标主机的ip'
MONGO_URI = '目标主机的ip'

(二)从机配置

在主机配置的基础上进行改写即可。

1、首先注释掉redis_urls.py文件中所有的代码,因为从机是从主机中取出任务的。

scrapy_redis和scrapy_splash配合使用的配置 scrapy redis原理_队列_14


2、将settings中的配置改一下:

就是把下述两行改掉:

REDIS_HOST = '目标主机的ip'
MONGO_URI = '目标主机的ip'