Github上聚集了世界上很多优秀的工程师,团队和优秀的开源项目,事实上也是聚集了软件行业相当一部分的思考和实践。分析Github上的数据无疑是一件非常有意义和价值的事情,下图就是我所使用的方法绘制的GitHub license 词云,先一睹为快吧。
同时我觉得以Github数据为基础,写一写相关的软件论文还是非常的容易,目前这方面的题材也不多。
有很多的公众号以及文章介绍了Github上的各种趋势以及热门项目,当然使用的方法绝大多数是基于爬虫的。事实上,有无数的程序员,在学习爬虫技术之后可能会拿GitHub进行练手,分析GitHub上的数据,不信你可以在GitHub上搜一遍。至此你可能认为本文介绍的是爬虫,当然不是,已经有那么多爬虫文章,我也没必要再多搞一篇。因为我思考了一下爬虫的方法至少存在以下四个主要问题:
(1),爬虫的数据不全,通常只取页面中某几项的信息。多数爬虫的文章只是讲述了原理,要想对于GitHub这种级别的网站进行全面的爬取,面临的困难重重。说起来爬虫的本质就是一条HTTP请求,但是工程实现并不简单。
(2),爬取的数据不够详细,即使爬取到了fork的数量,还是没有办法知道这些fork数量是2018年还是2019年发生的事情。
(3),个人即使爬取到较多的数据,存储检索如此巨大的数据都会存在很多的问题。
(4),GitHub上时刻都有事件发生,要维持频繁更新并不容易。
因此我所介绍的并不是不爬虫,所介绍的是直接获取Github上所有活动数据的四种方法。
(1),有的方法可以下载本地离线分析,对于个人用户数据格式检索不方便。
(2),有的方法可以存成数据库在本地,对于个人用户数据量大,TB级数据,存储是一个问题,检索也不够快。
(3),云数据库的方法在存储和检索方面有优势,但是不能够完全的自动化操作。
(4),如何使用云数据库的API去完成自动化操作,看起来不错。
授人以鱼不如授人以渔,本文将上述几种分析GitHub数据的方法分享出来,希望大家在了解本文的方法后能做更多有价值的事情。
上述方法逐层递进,每一种方法都有其优势和不足之处,可以按照自己的需求选取适合自己的方法,然后你写可以在公众号或者博客中分析Github上如下一些有趣的事情,如下:
(1),GitHub 中哪种语言以及 License 的项目最多?
(2),你的母校,所在公司在 GitHub 开源贡献排名,bat排名如何,中国在 GitHub 开源贡献排名?
(3),程序员提交代码背后的黑话都有哪些,commit记录和issue中里面出现最高的词汇是什么?
(4),GitHub 上有多少独立仓、多少独立提交、多少独立开发者?
(5),哪些大神在 GitHub上的贡献最多,哪些项目被 star,Fork 的次数最多?
(6),开源是程序员之间的社交,隐藏在他们背后的黑话都有哪些呢?
(7),github中哪种语言的项目最多,哪种license的项目最多?这在诸多公司开源治理中可能用得到,如果你使用了GPL license的项目,那要小心了。
(8),伊朗开发者被移除github,是怎么做到的
(9),评论里面出现最高的词汇是什么?
(10),github中所有的python开源项目中, 哪个模块的引用最多?或者java项目中哪个jar包的引用次数最多?
(11),按照时间的粒度分析github的趋势,例如一个小时,一天,一个月,甚至一年。例如在这个时间段内产生了多少次commit,star,fork等等。
我只是选取了一些话题,你还可以分析其他的一些有趣的事情。很多基于Github的推荐基本都可以采用本文的方法。在学习完本文方法之后你也可以像一些公众号那样定期发布 GitHub 的一些趋势走向了,当然关于github的种种你都都可以按照自己的意愿去查询,gitchub中隐藏着大量的财富等待你去挖掘。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。