-
scrapy-redis 实现分布式,其实从原理上来说很简单,这里为描述方便,我们把自己的核心服务器称为 master,而把用于跑爬虫程序的机器称为 slave。
-
我们知道,采用 scrapy 框架抓取网页,我们需要首先给定它一些 start_urls,爬虫首先访问 start_urls 里面的 url,再根据我们的具体逻辑,对里面的元素、或者是其他的二级、三级页面进行抓取。而要实 现分布式,我们只需要在这个 starts_urls 里面做文章就行了。
-
我们在 master 上搭建一个 redis 数据库(注意这个数据库只用作 url 的存储,不关心爬取的具体数 据,不要和后面的 mongodb 或者 mysql 混淆),并对每一个需要爬取的网站类型,都开辟一个单独 的列表字段。通过设置 slave 上 scrapy-redis 获取 url 的地址为 master 地址。这样的结果就是,尽管 有多个 slave,然而大家获取 url 的地方只有一个,那就是服务器 master 上的 redis 数据库。
-
并且,由于 scrapy-redis 自身的队列机制,slave 获取的链接不会相互冲突。这样各个 slave 在完成抓 取任务之后,再把获取的结果汇总到服务器上(这时的数据存储不再在是 redis,而是 mongodb 或者 mysql 等存放具体内容的数据库了)
-
这种方法的还有好处就是程序移植性强,只要处理好路径问题,把 slave 上的程序移植到另一台机
器上运行,基本上就是复制粘贴的事情
你了解分布式爬虫的工作机理吗?
最新推荐文章于 2024-06-23 16:01:36 发布