爬虫 :scrapy_redis分布式原理及主从配置

scrapy-redsi分布式
1.什么分布式?
由多个计算机共同完成一个任务的模式。
多个计算机共同完成,可以提高效率。
问题:如何让多个计算机协同处理一件事?
爬虫 :scrapy_redis分布式原理及主从配置_第1张图片
2.scrapy-redis涉及的就是爬虫项目的分布式部署。
我们把一个相同的爬虫项目部署到多个机器上,让多个机器同时爬取,增加爬取效率。
分布式思路:
1.在存入数据的时候,我们可以规定一台电脑是主机,所有人都链接这个电脑数据库存入数据。
2.数据都是重复的。—怎么让数据不重复,就可以实现分布式。

如果实现分布式,我们需要建立一个公共的区域,让四个电脑去公共区域里面拿任务,这个思想和多线程任务分配很像。

通过公共管理对象,来约束每一个相互独立的资源或者程序。
爬虫 :scrapy_redis分布式原理及主从配置_第2张图片
1.导入:from scrapy_redis.spiders import RedisSpider
更改spider继承,让spider继承RedisSpider
2.注释start_urls,新建一个py文件,用来将url存储到redis数据中。

3.在spider增加类变量redis_key,

,spider设置完毕
4.在settings中进行配置。
主机setting配置:
###配置scrapy-redis调度器
SCHEDULER = “scrapy_redis.scheduler.Scheduler”
###配置url去重
DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”
ITEM_PIPELINES = {
‘scrapy_redis.pipelines.RedisPipeline’: 300 #同时可有mongo的
}
SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.PriorityQueue’
###主机名
REDIS_HOST = ‘localhost’
##端口号
REDIS_PORT = 6379
2.从机步骤:
1,将star_urls初始化的代码全部注释。
2.从机的redis可以关闭
3、‘REDIS_HOST’:主机ip,
‘MONGO_URI’:‘localhost’
从机setting配置:
SCHEDULER = “scrapy_redis.scheduler.Scheduler”
# 去重
‘DUPEFILTER_CLASS’: “scrapy_redis.dupefilter.RFPDupeFilter”
‘SCHEDULER_QUEUE_CLASS’ :‘scrapy_redis.queue.PriorityQueue’

# ITEM_PIPELINES = {
#     'scrapy_redis.pipelines.RedisPipeline': 300
# }

你可能感兴趣的:(爬虫 :scrapy_redis分布式原理及主从配置)