Crawlab 是基于 Golang 的分布式爬虫管理平台,支持 Python、NodeJS、Java、Go、PHP 等多种编程语言以及多种爬虫框架。
相信已经对 Crawlab 有所了解的同学应该大概了解 Crawlab 是一个爬虫管理平台。如果不理解什么是爬虫管理平台,建议读者先阅读《如何快速搭建实用的爬虫管理平台》。简单来说,爬虫管理平台是一种能够管理爬虫和执行、监控爬虫任务的平台,可以将爬虫操作可视化出来。而 Crawlab 作为一个灵活且强大的爬虫管理平台,从今年 3 月份上线以来,已经收获不少爬虫工程师以及开发者的好评,很多用户已经在企业中部署使用 Crawlab。现在 Crawlab 在 Github 上已经有 3.1k stars,Dockerhub 上有 7.1k pulls。另外,Crawlab 还收到了不少实际用户反馈的建议,在 Github 上已经解决了 122 个 issues,open 的还有 48 个。除了 bug 以外,其中有非常多的建设性意见,包括采用配置文件来配置怕环境、爬虫任务数据导出、更好的文件管理等等。
Crawlab 为什么能受到用户的好评?我们总结下来,主要是 Crawlab 解决了爬虫工程师要管理很多爬虫的痛点。一般爬虫工程师需要查看爬虫任务运行情况,例如错误日志、时间等等,这些 Crawlab 都可以帮他们做到;另外爬虫工程师还需要定时执行任务,而 Crawlab 恰好也有定时任务的功能;此外,Crawlab 是 golang 写的后端,在稳定性上来说是比较强的。我们在调研了用户对 Crawlab 的定位后,发现用户任务 Crawlab 提供的最大价值是便捷性,也就是 Easiness。因此,在本次更新 v0.4.1 (严格意义上来说是 v0.4.0,但这一版有 bug )中 Crawlab 推出了另一个重大功能,可配置爬虫,能够进一步的简化抓取过程。下面我们将着重介绍一下。
如果是 Crawlab 早期的用户,可能已经对可配置爬虫这个名词不陌生,因为我们在 v0.2.1 中已经开发过这样的功能(详情见《我是如何在 3 分钟内开发完一个爬虫的》)。只是当时的版本还非常局限,仅仅支持非常简单的配置,而且稳定性也不高,实用性不强,后来就在迁移到 golang 版本的时候移除了。
但由于很多 Crawlab 的用户都在问可配置爬虫,甚至有人在 Github 上提出了这样的 enhancement issue,我们意识到这个需求还是很普遍的。因此,这次版本更新中就将这个功能迁移回来了。但是本次更新的可配置爬虫跟 v0.2.1 版本有很大的不同,虽然同样都是基于 scrapy 框架,但不同的是 v0.4.1 版本相较于老版本来说更强大,更通用。
下面是本次更新的可配置爬虫的截图。
阶段( Stage )、字段( Field )配置
流程图
设置
Spiderfile
简单来说,可配置爬虫就是能够通过不写代码、只配置抓取规则的方式来编写爬虫,一个不复杂的列表+详情页的爬虫很快就写好了,大概 1-5 分钟之内就可以写完。另外 Spiderfile
是 Crawlab 新开发的定义爬虫的方式,旨在让配置爬虫更简单,就跟 Dockerfile
、docker-compose.yml
、Jenkinsfile
等类似,利用配置代码来定义一系列操作,做到 Spider as Code
。我们今后的开发将会围绕着 Spiderfile
,包括爬虫所需的库、爬虫运行参数、爬虫定时任务等等,都可以在 Spiderfile
中定义,这个我们开发组后续会逐步完善。
下面,我们将介绍可配置爬虫的一些基本概念。下图是可配置爬虫中各个概念之间的关系。
可配置爬虫包括如下元素:
阶段
、字段
、分页
等都可以由这个文件配置;下一阶段
,且只能定义一个。Crawlab 的可配置爬虫是基于 Scrapy 的,因此天生支持并发。而且,可配置爬虫完全支持自定义爬虫的一般功能,因此也支持任务调度、任务监控、日志监控、数据分析。其可配置原理是,Crawlab 的可配置爬虫会根据 Spiderfile 的配置规则来生成 scrapy 代码,然后让其像自定义爬虫一样运行。这样来看,可配置爬虫是一种特殊的自定义爬虫,只是其代码是由 Spiderfile 配置文件转译后生成的。
如果您觉得 Crawlab 对您的日常开发或公司有帮助,请加作者微信 tikazyq1 并注明 "Crawlab",作者会将你拉入群。欢迎在 Github 上进行 star,以及,如果遇到任何问题,请随时在 Github 上提 issue。另外,欢迎您对 Crawlab 做开发贡献。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.