如何在人力资源网站做合同续签,wordpress 改为中文,seo博客模板,十大咨询公司经典案例原文地址https://www.cnblogs.com/zhaof/p/7306374.html 关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构#xff0c;只在本机维护一个爬取队列#xff0c;Scheduler进行调度#xff0c;而要实现多态服务器共同爬取数据关键就是共享爬取队列。 这里重…原文地址https://www.cnblogs.com/zhaof/p/7306374.html 关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构只在本机维护一个爬取队列Scheduler进行调度而要实现多态服务器共同爬取数据关键就是共享爬取队列。 这里重要的就是我的队列通过什么维护这里一般我们通过Redis为维护Redis非关系型数据库Key-Value形式存储结构灵活。并且redis是内存中的数据结构存储系统处理速度快提供队列集合等多种存储结构方便队列维护 如何去重这里借助redis的集合redis提供集合数据结构在redis集合中存储每个request的指纹在向request队列中加入Request前先验证这个Request的指纹是否已经加入集合中。如果已经存在则不添加到request队列中如果不存在则将request加入到队列并将指纹加入集合 如何防止中断如果某个slave因为特殊原因宕机如何解决这里是做了启动判断在每台slave的Scrapy启动的时候都会判断当前redis request队列是否为空如果不为空则从队列中获取下一个request执行爬取。如果为空则重新开始爬取第一台丛集执行爬取向队列中添加request 如何实现上述这种架构这里有一个scrapy-redis的库为我们提供了上述的这些功能scrapy-redis改写了Scrapy的调度器队列等组件利用他可以方便的实现Scrapy分布式架构关于scrapy-redis的地址https://github.com/rmax/scrapy-redis 搭建分布式爬虫 参考官网地址https://scrapy-redis.readthedocs.io/en/stable/ 前提是要安装scrapy_redis模块pip install scrapy_redis这里的爬虫代码是用的之前写过的爬取知乎用户信息的爬虫 修改该settings中的配置信息 替换scrapy调度器SCHEDULER scrapy_redis.scheduler.Scheduler 添加去重的classDUPEFILTER_CLASS scrapy_redis.dupefilter.RFPDupeFilter 添加pipeline如果添加这行配置每次爬取的数据也都会入到redis数据库中所以一般这里不做这个配置ITEM_PIPELINES {scrapy_redis.pipelines.RedisPipeline: 300} 共享的爬取队列这里用需要redis的连接信息这里的user:pass表示用户名和密码如果没有则为空就可以REDIS_URL redis://user:passhostname:9001 设置为为True则不会清空redis里的dupefilter和requests队列这样设置后指纹和请求队列则会一直保存在redis数据库中默认为False一般不进行设置 SCHEDULER_PERSIST True 设置重启爬虫时是否清空爬取队列这样每次重启爬虫都会清空指纹和请求队列,一般设置为FalseSCHEDULER_FLUSH_ON_STARTTrue 分布式 将上述更改后的代码拷贝的各个服务器当然关于数据库这里可以在每个服务器上都安装数据也可以共用一个数据我这里方面是连接的同一个mongodb数据库当然各个服务器上也不能忘记所有的服务器都要安装scrapy,scrapy_redis,pymongo 这样运行各个爬虫程序启动后在redis数据库就可以看到如下内容dupefilter是指纹队列requests是请求队列 转载于:https://www.cnblogs.com/111testing/p/10325428.html