爬取了 GitHub 上 1465w 个存储库,我做了个简易版“GitHub 2019 第三方统计” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AxtonYao
V2EX    分享发现

爬取了 GitHub 上 1465w 个存储库,我做了个简易版“GitHub 2019 第三方统计”

  •  
  •   AxtonYao 2020-01-14 18:46:27 +08:00 2742 次点击
    这是一个创建于 2096 天前的主题,其中的信息可能已经有所发展或是生改变。

    去年年底,我突发奇想想要自己统计一番 GitHub 上存储库的一些信息。尽管 GitHub 有自己的年度统计,我还是想试着自己爬取一下,说不定能挖出什么有意思的信息。于是写了个简单的爬虫然后扔在了两台服务器上开始跑( GitHub API 真是好文明)。

    从 2019.11.21 3 时到 2020.1.12 24 时的 52 天 21 小时内,我的爬虫一共爬取了与 2,024,705 个用户有关的 14,651,923 个公共存储库的基础信息,平均每秒爬取 3.2 个存储库。据 GitHub 的官方数据计算,我爬取了大约 15% 的存储库信息,但由于封禁库和私有库的数量未知,我暂时无法确定我爬取的存储库占公共库的比例。之后我做了一些统计,统计结果在这里:

    > GitHub 2019 统计无垠版 <

    这里放一些有意思的分析结果:

    比较出乎我意料的是创建自 Fork 的存储库的占比。我预估这样的存储库占比不会太低,但没有想到能接近一半。此外单用户拥有最大库数量也超出了我的预期,pombredanne 这个用户名下拥有将近 24k 的存储库,不过绝大多数都是 Fork 来的,在情理之中。此外在这个数据集中拥有最多存储库的账户其实是一个组织 gitpan,这个组织拥有 36,377 个存储库。


    语言排行

    从第四名开始就和 GitHub 的官方排名不太一样了,这里对于语言的优劣不做评价(逃


    Star 数量-库数量

    就算我缩放了横轴,这个曲线还是比我预估的陡多了。加上受爬取方式的影响,GitHub 中 Star 数较少的存储库数量远比我爬取到的多。也就是说,实际情况下曲线远比这个图表上的陡。 拿点 Star 不容易啊。


    用户名长度与库名长度

    有意思的是,存储库名称最受欢迎的长度和用户名一样,都是 8 位。此外在超长存储库名上,有很多人充分发挥了他们的创造力,比如这几个例子:

    • testing-something-elsetesting-something-elsetesting-something-elsetesting-something-elsetesting-some
    • nyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyannyan
    • -

    每月新增库数量

    由于我并没有完整爬取所有存储库,我只能以相对值来统计每月新增存储库数量的变化趋势。在这个图表中,我将 2017-09 的数据设为了 100%。 至于 2017 年 6, 7, 8 三个月的“一柱擎天”,原因正是微软收购 Github。此外,GitHub 中只有一个创建于 2008 年之前的存储库,那就是 id: 1mojombo/grit,而它的创建者正是 GitHub 的创始人之一 Tom Preston-Werner。


    在爬取到的所有存储库中,有 3 个奇怪的存储库是“无主”的,即它们的 owner 属性为空。这三个存储库的基本信息如下。

    ID名称ForkedStar语言许可证创建于
    72385291vscode-redprl10TypeScriptapache-2.02016-10-31 08:50:01
    181218346electron-sys10Rustother2019-04-14 03:20:56
    181391880node-sys6Rustother2019-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 官方,本文仅供学习之用。

    2 条回复    2020-01-16 13:10:24 +08:00
    noreplay
        1
    noreplay  
       2020-01-15 18:55:23 +08:00 via Android
    删除线里面的文字好骚啊(正面意义上的
    shadeofgod
        2
    shadeofgod  
       2020-01-16 13:10:24 +08:00
    恕我直言,微软收购 GitHub 难道不是 2018 年 6 月宣布的吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     901 人在线   最高记录 6679     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:05 PVG 04:05 LAX 13:05 JFK 16:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86