Scrapy 是一个通用的爬虫框架,但是不支持分布式
Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)
scrapy任务调度是基于文件系统,这样只能在单机执行crawl。
scrapy-redis将待抓取request请求信息和数据items信息的存取放到redis queue里,使多台服务器可以**同时执行crawl和items process**,大大提升了数据爬取和处理的效率。
分布式采用主从结构设置一个Master服务器和多个Slave服务器,Master端管理Redis数据库和分发式下载任务,Slave部署Scrapy爬虫提取网页和解析提取数据,最后解析的数据存储在同一个MongoDb数据库中。
实现原理
通过scrapy写了一个工程之后,是不能同时让两个电脑共同爬取
为什么不能呢?
因为你的scrapy运行在你的电脑的内存中,你的调度器运行在你的内存中。我的调度器运行在我的内存中
将**调度器**放到公共的地方,redis中,都放到我的redis中
实现结果:
我的windows:是服务端(redis放的地方,调度器)

Scrapy虽然强大,但不支持分布式。Scrapy-Redis通过结合Redis组件,实现分布式爬虫。它使用Redis作为中央调度器,进行任务分配和去重过滤。在主从结构中,Master负责任务管理和Redis数据库,Slave运行Scrapy爬虫。请求通过Redis队列进行分发,去重通过Redis的Set实现。解析后的Items存入Redis队列,便于多机器处理,扩展爬虫集群。
最低0.47元/天 解锁文章
951

被折叠的 条评论
为什么被折叠?



