去年年底,我突发奇想想要自己统计一番 GitHub 上存储库的一些信息。尽管 GitHub 有自己的年度统计,我还是想试着自己爬取一下,说不定能挖出什么有意思的信息。于是写了个简单的爬虫然后扔在了两台服务器上开始跑( GitHub API 真是好文明)。
从 2019.11.21 3 时到 2020.1.12 24 时的 52 天 21 小时内,我的爬虫一共爬取了与 2,024,705 个用户有关的 14,651,923 个公共存储库的基础信息,平均每秒爬取 3.2 个存储库。据 GitHub 的官方数据计算,我爬取了大约 15% 的存储库信息,但由于封禁库和私有库的数量未知,我暂时无法确定我爬取的存储库占公共库的比例。之后我做了一些统计,统计结果在这里:
这里放一些有意思的分析结果:
比较出乎我意料的是创建自 Fork 的存储库的占比。我预估这样的存储库占比不会太低,但没有想到能接近一半。此外单用户拥有最大库数量也超出了我的预期,pombredanne 这个用户名下拥有将近 24k 的存储库,不过绝大多数都是 Fork 来的,在情理之中。此外在这个数据集中拥有最多存储库的账户其实是一个组织 gitpan,这个组织拥有 36,377 个存储库。
从第四名开始就和 GitHub 的官方排名不太一样了,这里对于语言的优劣不做评价(逃
就算我缩放了横轴,这个曲线还是比我预估的陡多了。加上受爬取方式的影响,GitHub 中 Star 数较少的存储库数量远比我爬取到的多。也就是说,实际情况下曲线远比这个图表上的陡。 拿点 Star 不容易啊。
有意思的是,存储库名称最受欢迎的长度和用户名一样,都是 8 位。此外在超长存储库名上,有很多人充分发挥了他们的创造力,比如这几个例子:
由于我并没有完整爬取所有存储库,我只能以相对值来统计每月新增存储库数量的变化趋势。在这个图表中,我将 2017-09 的数据设为了 100%。 至于 2017 年 6, 7, 8 三个月的“一柱擎天”,原因正是微软收购 Github。此外,GitHub 中只有一个创建于 2008 年之前的存储库,那就是 id: 1
的 mojombo/grit,而它的创建者正是 GitHub 的创始人之一 Tom Preston-Werner。
在爬取到的所有存储库中,有 3 个奇怪的存储库是“无主”的,即它们的 owner 属性为空。这三个存储库的基本信息如下。
ID | 名称 | Forked | Star | 语言 | 许可证 | 创建于 |
---|---|---|---|---|---|---|
72385291 | vscode-redprl | 否 | 10 | TypeScript | apache-2.0 | 2016-10-31 08:50:01 |
181218346 | electron-sys | 否 | 10 | Rust | other | 2019-04-14 03:20:56 |
181391880 | node-sys | 否 | 6 | Rust | other | 2019-04-15 09:33:08 |
更奇怪的是这三个存储库“无主”的情况还不一样。第一个存储库可以通过 /repositories
这个 GitHub API 找到, 这个链接中的第一个存储库就是它;而其余两个存储库甚至无法在 /repositories
API 中找到。不过就算能在 API 中找到第一个存储库,它的 html_url
,即 https://github.com//vscode-redprl
仍然是不可访问的。我对爬虫是如何找到这三个存储库的以及这些 Stars 是哪里来的感到好奇。
至于数据集,导出的 SQL 文件大约为 1.38GB,全部放在了 GitHub 上(在危险的边缘试探.webp
yrccondor/github-analysis-2019
此外我也提供了 MEGA 下载,链接在这里。
免责声明:我会尽可能地提供准确的信息,但我不对此文章中信息的准确性和即时性及带来的任何影响负责。我不代表 GitHub 官方,本文仅供学习之用。
1
noreplay 2020-01-15 18:55:23 +08:00 via Android
删除线里面的文字好骚啊(正面意义上的
|
2
shadeofgod 2020-01-16 13:10:24 +08:00
恕我直言,微软收购 GitHub 难道不是 2018 年 6 月宣布的吗
|