likes
comments
collection
share

收获人生第一个 5k Star 开源项目,经验教训分享给大家

作者站长头像
站长
· 阅读数 3

前言

开发产品永远都是既痛苦,又开心的事情。一方面因为不了解用户真实需求、害怕闭门造车、担心技术无法实现而痛苦;另一方面,却会因为取得小小成就、获得用户认可、不断帮助用户解决问题而开心,从而继续坚持下去。Crawlab 就是这样让我既痛苦又开心的开源项目。它从去年 3 月份提交第一次 commit,到最近,已经在 Github 上积攒了 5k Star,成长为了最受欢迎的开源爬虫管理平台。其中,Crawlab 多次上榜到 Github Trending,不断被全球的开发者所认识了解;同时,也被码云 Gitee、开源中国所收录,让更多国内开发者所熟知。社区也不断完善,微信群成员已接近 1.2k,每天都有人在上面各种咨询问题和交流经验。同时 Github 上也有很多热心用户在上面提出各种 Issue,帮助我们优化产品。

从最开始的 Flask + Celery 架构,到如今用 Golang 自研开发调度引擎,经历了很多次大大小小的迭代。产品不断成熟的同时,也在不断发展。相信不久将衍生出更多实用的功能,包括用户们提出的各种很好的反馈建议。

下图是 Crawlab 的 Github 累计 Star 趋势图,可以看出 Crawlab 已达到 5k Star 的过程中经历了两次大的增长以及不断的小规模增长。

收获人生第一个 5k Star 开源项目,经验教训分享给大家

项目简介

查看演示 Demo

项目自 2019 年 4 月份上线以来受到爬虫爱好者们和开发者们的好评,超过一半的使用者表示已经在用 Crawlab 作为公司的爬虫管理平台。经过近数月的迭代,我们陆续上线了 定时任务、数据分析、可配置爬虫、SDK、消息通知、Scrapy 支持、Git 同步 等功能,将 Crawlab 打造得更加实用,更加全面,能够真正帮助用户解决爬虫管理困难的问题。

Crawlab 主要解决的是大量爬虫管理困难的问题,例如需要监控上百个网站的参杂 scrapyselenium 的项目不容易做到同时管理,而且命令行管理的成本非常高,还容易出错。Crawlab 支持任何语言和任何框架,配合任务调度、任务监控,很容易做到对成规模的爬虫项目进行有效监控管理。

Crawlab 可以很容易的将开发者的爬虫集成进来。配合 CLI 工具,您可以将任何爬虫项目上传到 Crawlab,并被同步到所有的节点上,形成分布式架构。另外,Crawlab 自带的 SDK 让您可以非常轻松的将抓取到数据可视化到 Crawlab 界面中。您可以在界面上查看、下载抓取到的任务结果(如下图)。

收获人生第一个 5k Star 开源项目,经验教训分享给大家

收获人生第一个 5k Star 开源项目,经验教训分享给大家

收获人生第一个 5k Star 开源项目,经验教训分享给大家

项目发展

Crawlab 到如今已经有 1 年了,在 Github 上的 Star 数量已过半万,但这还不能说明任何问题。之前有网友指出,Github 上的 Star 数并不能说明问题,其实在淘宝上也可以买到 Star... 另一个有趣的事实是,很多在 Github 上成千上完 Star 数的作品,竟然是 Markdown 项目。什么是 Markdown 项目?也就是这个项目中没有多少可执行的代码文件,绝大多数是写满技术知识的 Markdown 文件,可以是面试题,可以是知识整理,也可以是唐诗宋词,等等。这些 Markdown 项目的盛行,反映了开发者们的知识焦虑。其实,有时候,专心使用一个项目,多阅读理解一下源码,甚至自己动手码几行代码,也是能不断提高自己的。我是一个野生程序员,不喜欢底层原理和理论推导,喜欢拿起键盘,埋头开(fu)发(zhi)产(zhan)品(tie)。因此,我喜欢在产品中找到用户的痛点,并用技术的方式加以解决。

下图是 Crawlab 项目的发展历程。

收获人生第一个 5k Star 开源项目,经验教训分享给大家

可以看到,项目初期是用 Flask + Celery 来完成分布式调度逻辑的,这其实是无奈之举。因为当时我最熟悉的语言是 Python,不会 Java、不会 Golang、不会 C++,因此选择了当时上手最快的 Python 作为主力编程语言,为后来的更换框架埋下伏笔。

积攒了首批用户之后,他们提出了各种各样的意见和反馈。其中有用 Docker 来部署的建议,这成为了后来部署 Crawlab 的首选。还有人提出可配置爬虫的概念(当时不是这个名字,可配置爬虫是我取的名字),我也用 Python 把它实现了出来。

但非常令人恼火的是,在 v0.2.x 版本的时候,定时任务经常出各种各样的 Bug:有时会重复执行两次或多次;有时会不按时间执行;有时甚至压根漏掉执行。更让人担忧的是,当爬虫的数量增加的时候,后端的压力开始加大,每次返回结果需要耗费 1 秒甚至几秒的时间。连我自己使用起来都很难受。于是,我开始从根本上思考,是不是 Python 这一套架构根本满足不了我们的需求。

相比于 Golang 重构带来的受欢迎效应,我觉得 v0.4.x 相对来说就没那么直接了。很多 v0.4.x 的迭代功能都是根据用户的反馈来的,包括消息通知、权限管理、界面安装依赖、Scrapy 支持等等。这些功能都是针对许多需要在企业中应用爬虫管理平台的用户开发的。现在我不知道有多少企业在真正使用 Crawlab,但我相信随着 Crawlab 的不断完善,跟多的中小企业、甚至是大型企业可以开箱即用的将 Crawlab 部署使用起来,进一步推广给其他有需求的用户。

项目经验

Crawlab 带来的经验教训非常多。很多人都在问我,是什么让你坚持了这么久来开发一个免费产品呢?又有很多人也在问我为什么不开发商业版呢?这些问题我觉得都是自然而然的,也是理所当然的。就我来看,要做好一个开源项目,光光是有这个 idea 是不行的,当然靠此赚钱的这种思想更会将项目带往歧途。以下几点,是我觉得打造一个受欢迎的开源项目的要素。

寻找痛点,并尝试解决

很多人在工作生活自身有不少痛点。如果能发现这些痛点(注意,是 “痛”,而不是 “痒”),就很可能会发现一个解决它的机会。我们可以从身边来尝试寻找痛点。例如,Crawlab 就是在思考一个工作问题时诞生的。我所在的部门有上百个爬虫,其中包括了 Selenium 爬虫和其他类型的爬虫。我们当时的爬虫管理方式和实现方式都有非常多的局限性,导致了扩展性不高、排查异常困难等问题。我们有一个 Web UI 界面,但是仅仅局限于业务,没有专注于爬虫本身。作者当时思考,是不是只有我们公司才遇到这个问题,还是这个问题是一个普遍问题,几乎每个需要爬虫的公司都会遇到。

当然,仅仅是找到这个痛点还不够,还需要验证它。例如,我为了验证之前这个假设,花了半个月的时间做了一个最小可行性产品(MVP),Crawlab v0.1 版本,只有最基本的执行爬虫脚本的功能。结果,第一版发布后陆陆续续收到正面反馈,也有不少改进建议。第一天的 Star 数就达到了 30,后面两天涨到了100。这验证了我的假设,爬虫管理困难这个问题是普遍存在的,大家都觉得 Crawlab 是个不错的 idea,愿意来尝试。这才开始让作者更有动力不断完善这个产品。所以,从身边的问题出发是个很好的开始。

通过用户调研完善产品

很多人开发产品都是闭门造车,企图一厢情愿的让用户爱上他们的产品。这对于技术人员来说是一个陷阱,我们需要时刻警惕不要陷入敝帚自珍的境地无法自拔。怎么来了解用户需求呢?一个很有效的方法就是用户调研。

不要低估产品推广的力量

总结

爬虫管理平台 Crawlab 到如今已经进入第二年。Crawlab 是一个后起之秀,相比于前辈 Gerapy、SpiderKeeper、ScrapydWeb 来说,更加年轻,也更加灵活和实用。因此才会有这么多人来尝试使用 Crawlab。打造开源产品是个需要长期经营的事业,那种一夜冲天的 “暴发户” 不是人人都能够创造的。因此,需要保持耐心以及匠人精神。所谓匠人精神,不是将产品打造得多完美,而是将产品打造得更接地气,更加使用友好,更能让用户满意,更能解决用户的问题,这才算是匠人精神。所以,我们不能闭门造车,一味的追求技术上的完美,而忽略了用户真正的问题。Crawlab 在解决用户的问题上,还有很长的道路需要走。但我们不担心,因为我们现在有强大的开发组,不断成长的社区,和不断给出反馈意见的用户。相信第二年,Crawlab 会解决更多用户的问题,让爬虫变得简单,迎来第二个 5k Star。

希望本篇文章对您的工作和学习有所帮助,有任何疑问,请加作者微信 tikazyq1,或者在底部留言提问,作者将尽力回答。谢谢!

收获人生第一个 5k Star 开源项目,经验教训分享给大家

参考