旅游网站开发建设方案,手机网站营销方法,全网营销老婆第一人黑料,有什么网站可以做外贸导模块
pip install scrapy-redis 原来scrapy的Scheduler维护的是本机的任务队列#xff08;待爬取的地址#xff09;本机的去重队列#xff08;放在集合中#xff09;---》在本机内存中 如果把scrapy项目#xff0c;部署到多台机器上#xff0c;多台机器爬取的内容是重… 导模块
pip install scrapy-redis 原来scrapy的Scheduler维护的是本机的任务队列待爬取的地址本机的去重队列放在集合中---》在本机内存中 如果把scrapy项目部署到多台机器上多台机器爬取的内容是重复的 流程图 所以实现分布式爬取的关键就是找一台专门的主机上运行一个共享的队列比如Redis 然后重写Scrapy的Scheduler让新的Scheduler到共享队列存取Request并且去除重复的Request请求所以总结下来实现分布式的关键就是三点 #1、多台机器共享队列 #2、重写Scheduler让其无论是去重还是任务都去访问共享队列 #3、为Scheduler定制去重规则利用redis的集合类型 # scrapy-redis实现分布式爬虫 -公共的去重 -公共的待爬取地址队列 使用步骤 from scrapy_redis.spiders import RedisSpider 1 把之前爬虫类继承class CnblogsSpider(RedisSpider): 2 去掉起始爬取的地址加入一个类属性 去掉它start_urls [https://www.cnblogs.com] #爬取的初始地址 redis_key myspider:start_urls # redis列表的key后期我们需要手动插入起始地址 3 配置文件中配置 scrapy redis去重类使用redis的集合去重 DUPEFILTER_CLASS scrapy_redis.dupefilter.RFPDupeFilter 不使用原生的调度器了使用scrapy_redis提供的调度器它就是使用了redis的列表 SCHEDULER scrapy_redis.scheduler.Scheduler REDIS_HOST localhost # 主机名 REDIS_PORT 6379 # 端口 ITEM_PIPELINES { # mysfirstscrapy.pipelines.MyCnblogsPipeline: 300, mysfirstscrapy.pipelines.MyCnblogsMySqlPipeline: 301, scrapy_redis.pipelines.RedisPipeline: 400, } # 再不同多台机器上运行scrapy的爬虫就实现了分布式爬虫 4.将初始爬取的地址传到redis队列中---cmd启动redis
lpush key value [value ...]
key------就是第二步 redis_key对应的值
value--------就是爬取的地址初始地址 分布式爬虫 - 刘清政 - 博客园 (cnblogs.com)