我爬了杨超越编程杯,这是什么硬核的追星方式!
后台回复「ycy」即可获取本文代码和数据
阅读文本大概需要 6 分钟。
大家好我是痴海,最近互联网圈被杨超越编程杯给刷了屏,为了一探这硬核的追星方式,我爬了整个「超越杯」的数据。
1 什么是超越杯
那什么是超越杯?简单的来说就是由村民「杨超越的粉丝」自主举办的编程大赛,为了给超越打气加油并安利。
那杨超越又是谁?可能你并不知道杨超越,但她的表情包你一定见过。
对就是这张前段时间疯狂刷屏的表情「信超越,得好运」。
封面图也是超越杯的宣传海报,设计风格不仅非常酷,并且还有主办方和协办方,非常专业。
超越杯的主题不限范围,任何与杨超越相关的产品都可以参赛。比赛的流程主要分为四个阶段:组队、开发、比赛、运维。
Github 地址
https://github.com/ccyyycy/ycy/
目前已经有超过 200 名的村民参加比赛,村民当中还不乏一些 BAT 的员工,优秀作品的参赛者,还有机会得到 BAT 内推的名额。这是什么硬核的追星方式!
2 爬取 Issue 数据
我作为一名爬虫选手,自然就想到去 GitHub 仓库上爬一波数据,看看这些村民都有哪些优秀的想法和项目。
项目说明规定了需要参赛的村民请到 Issue 里发表组队,于是我打开了 Issue 界面。
村民的脑洞真是大开,有做游戏的、做 APP 的、甚至还用上了深度学习。随后我编写了「ycy_github.py」爬虫,把 Issue 里 229 数据都爬了下来,并存入到 mongodb 中。
我存储了 Issue 里的标题、相应链接、提交时间以及提交者的名称。超越杯数据有了,接下来就要开始下一步的分析。
3 超越杯的数据分析
有些数据内容并没有按格式来,而对于做数据分析的来说统一数据格式是非常重要的一件事,所以我首先把不符合格式的数据清理掉,清除后的数据还有 46 条。
1 格林威治时间转化
首先第一个坑就是 issue 上爬到的时间是「格林威治的时间」,并不是我们标准的北京时间格式。
所以我写了个函数先把「格林威治时间」先转化下。
def utc2local(date_string):
import dateutil.parser
import pytz
from datetime import datetime
local_time = dateutil.parser.parse(date_string).astimezone(pytz.timezone('Asia/Shanghai'))
da = datetime.strftime(local_time, '%Y-%m-%d %H:%M:%S')
return da
2 清洗不符合规范的标题
项目说明栏那里已经说明了提交格式 ,即下面这张图。
我就可以利用 split 函数分割 + 符号,如果分割出来的长度是等于 5 那大概率说明是按标准的格式来的,但还是会有不符合标准的。
原数据只有:issue_title、issue_url、issue_time、issue_name。
通过清洗到了最后的数据变成了下图所示,这样的数据就多了非常多有用的信息了。
到这里本次超越杯的数据基本清理完毕,清洗完之后就开始真正的分析环节了。
4 村民项目提交数
在时间线这条纬度上,3 月 8 号村民提交的 issue 数量是最多的,随后的数量依次递减。
5 村民们选题的方向
我从符合规范中的 46 个项目,通过标题得出的方向,从高到底依次给村民们的项目进行排序。
39% 的村民选择了做游戏,其他的占比基本差不多。村民们的方向也非常丰富多彩,游戏、音频、网站、图片、养成等等都有人在做。
其中有个「编程语言」引起了我的注意,好奇的我点开具体的 issue 地址,项目名为「超越语言/YCYL」。原来是为用繁体字的编程大佬,想要编写属于 YCY 的专属编程语言。
6 村民们脑洞大开的项目名称
接下来我对村民们的项目名称做了一个词云,看看大家用到最多的词语是什么。
很明显大家在取项目名称的时候,大多数会使用超越体,比如「超越快吃鸭」、「超越狂扁小朋友」、「超越带你玩」、「超越AR相机」。
但其中不乏一些即沙雕又有趣的项目名称。
1「双马尾少女不死鱼柠檬精」
2 「旅行青蛙-杨小越」
3 「超越滑机大战」
7 村民们使用的技术栈
村民们使用的技术栈最多是前三名依次是:微信小程序、微信小游戏、Python。
由于大家编写的技术名称并不是规范的写法,所以在统计使用技术栈的时候是有挺大偏差的。但并不影响从数据中可以看出,村民各个都身怀绝技,有会 Python、小程序、iOS、Anroid、小程序、机器学习、AR 等等。从前端到后台、从数据到建模、从设计到游戏,没有村民们不会的技术。
微信小程序之所以会被众多村民使用,一是于最近几年小程序的火爆,二是基于微信这个超级 APP 更容易传播,说不定其中的优秀的作品会在朋友圈引起不小的轰动,这样就可以把超越安利给更多的路人。
8 混入其中
在 issue 上面其实还有很多其他方向的内容,其中有不少的村民是选择爬虫,一下子我就兴奋起来,虽后我就顺藤摸瓜加入了其中一个 qq 群。
没错我也是白嫖代码的混子之一。
虽然群里大家调侃自己是来白嫖的,但实际上大家从确认主题,讨论方案,画出思维导图,分工,开始执行,这些步骤在短短的几个小时内就确认好,执行力非常惊人。
9 总结
杨超越最初出现在人们视野是在「创造 101」这档综艺节目上,由于她单纯不做作的性格,逐渐吸粉。但那时候知道杨超越的人还是范围很小的一部分,直到下面的表情出现之后,各大网络门户都能看到杨超越的身影。
我关注到杨超越也是因为朋友圈出现非常多这样的图片,甚至有人还当做头像。
而如今「超越杯」又火了起来,但它为什么会火?
固然是由于杨超越本身就是*的流量明星带来的热度,但我想是因为这样的追星方式,刷新了大部分人以前认知的。
以前的追星方式从来没有出现过这么硬核的编程形式,人天生对新鲜的事物会产生好奇心。就像我因为好奇村民们都会哪些优秀的想法,我才会写下这篇文章。所以这样的「超越杯」,才会引起人们的关注。
如今互联网时代,如果你有独特的一面,是有非常大概率火起来的。比如这次的「超越杯」,如果你也是一名程序员,恰好你的技术不错又有好的点子,最后胜出,虽然不会让你名声鹊起,但肯定能让你被关注「超越杯」的人记住。被人记住,你就可能是这个圈子里 的 KOL(意见领袖),你的影响力就有可能逐渐建立起来,一定你拥有自己的影响力,未来是会产生非常多你意想不到的收益。
最后妹子们如果遇到程序员就嫁了吧,钱多话少执行力还贼强。
我是痴海,一名正在成为数据分析师的爬虫师
喜欢这篇文章的读者,不妨转发、点好看
人必有痴,而后有成