理解什么是爬虫管理平台
定义
爬虫管理平台是一个一站式管理系统,集爬虫部署、任务调度、任务监控、结果展示等模块于一体,通常配有可视化 UI 界面,可以在 Web 端通过与 UI 界面交互来有效管理爬虫。爬虫管理平台一般来说是支持分布式的,可以在多台机器上协作运行。
当然,上述这个定义是狭义的,通常针对于技术人员或开发者或技术经理。企业内部一般都会开发自己的内部爬虫管理系统,以应对复杂的爬虫管理需求。这样的系统就是上述定义的狭义的爬虫管理平台。
爬虫管理平台模块
以下是一个典型的爬虫管理平台所涉及的模块。
爬虫管理平台架构
典型爬虫管理平台的模块主要包含以下内容:
任务管理:如何执行、调度爬虫抓取任务,以及如何监控任务,包括日志监控等等;
爬虫管理:包括爬虫部署,即将开发好的爬虫部署(打包或复制)到相应的节点上,以及爬虫配置和版本管理;
节点管理:包括节点(服务器/机器)的注册和监控,以及节点之间的通信,如何监控节点性能状况等;
前端应用:包括一个可视化 UI 界面,让用户可通过与其交互,与后台应用进行通信。
当然,有些爬虫管理平台可能还不止这些模块,它可能包括其他比较实用的功能,例如可配置的抓取规则、可视化配置抓取规则、代理池、Cookie 池、异常监控等等。
为什么需要爬虫管理平台
有了爬虫管理平台,开发者特别是爬虫工程师就能够方便的添加爬虫、执行任务、查看结果,而不用在命令行之间来回切换,非常容易出错。一个常见的场景就是爬虫工程师最初技术选型用了 scrapy 和 crontab 来管理爬虫任务,他不得不小心翼翼的选择定时任务的时间区间,以至于不会将服务器 CPU 或内存占满;更棘手的问题是,他还需要将 scrapy 产生的日志存到文件里,一旦爬虫出错了,他不得不用 shell 命令一个一个来查看日志来定位错误原因,严重时会花上一个整天;还有个严重的问题,爬虫工程师可能发现公司业务量在增加,他需要写上百个爬虫来满足公司的业务需求,而用 scrapy 和 crontab 来管理完全就是个噩梦。可怜的爬虫工程师其实完全可以选择一个合适爬虫管理平台来解决他的问题。