胡乱分析一下B站Up主们那些乱七八糟的东西
首先,这个题目,大概说明了。。。。。。我对博文要好好起题目这种事情已经完全放弃治疗了。
其次,如果你要觉得我会分析Up们的性格啊什么的,不好意思我真没这本事。。
再其次,没错,每次写博文正文之前我都喜欢乱扯废话。。。所以继续胡扯这篇博文出现的缘由,首先,最近一直在写python版本的B站的各种API(也就每晚看完番写上几行),然后突然觉得一个劲儿在写却不用来干点什么很没意思,看了一下那个又被放置Play了半个多月的VPS,决定用它抓点东西下来,反正有了自己封装的API了嘛,随手写了几行代码就扔上VPS去跑了;
当时扔上去的时候刚写完获取Up主们信息的那部分API,就让只抓了Up的信息下来。。。
抓下来后,碰上今天放假,实验室那群家伙回家的回家,消失的消失,基本没什么人剩下,要不是要给老板刻光碟我才懒得去。。下午无所事事就把这份数据拿来分析了一下;
说是分析,其实就是意识流地乱跑代码,想到哪写到哪,看有什么好玩的发生【实践表明:没有】。。
等我把API那部分捣鼓完我再写(shuǐ)一篇吧。。。。
好,继续闲扯,要怎么获取B站所有Up的信息呢?不想搞太麻烦的事情,简单一点,从某个Up作为种子出发,找出他所关注的全部人,然后再找出他关注的人所关注的人,爬虫一般抓下去,然后根据获取到的信息中投稿数
来判断他是Up还是路人甲;好!问题来了,找谁当种子Up主呢?据说C8酱在B站触手无所不及,然后一看,呵呵,搞笑了,C8没关注任何人。。。
坐拥如此庞大后宫的真土壕C8居然不关注一下自己的后宫这样真的好么?233333
没办法,然后我想了一下,嗯,就找B站我喜欢的Up主来做种子吧!嗯,就决定找自从生了小蓝毛后再也没更新过麻将视频的这货!我写这一段就是催更的!!赶紧给我去打麻将更新视频啊!不然我要报警了!!蓝毛太太!!
爬取的时候我设了一下爬取间隔0.5秒,但是也测试了一下无缝爬取发现B站一直没封IP什么的,看来B站暂时没做这方面的防护,可能是觉得没什么人会像我这么无聊吧。。。
爬取下来的结果我放在了Github,还是那样,有爱自取。【另外我把我分析用的Python代码和Mathematica代码还有结果也放在上面了。。】
按照我上面描述的方法爬取下来的Up主个数是35114个,如果要说有漏的,那么基本上是没有任何人关注的Up了。。。
保存下来的信息包括Up的id,昵称,投稿数,粉丝数,关注列表这几个;
开始分析一个数据,我一般都是先看一下最基本的结果和常识是否相符:比如所有Up的投稿数的统计分布:
嗯,还行,其中绝大部分Up的投稿数都在150以内,超过150的只有571位,其中某位投稿数多达14000部的Up在我分析中简直有如噪点般的存在。。。
然后看一下不同投稿数的Up的粉丝数,但是由于太乱,就统计了一下不同投稿数的Up们的平均粉丝个数:
发现在投稿数不多的情况下,也就是新手Up,他们的平均粉丝数基本是线性增长的,而后面随着投稿数的增加,估计投稿质量不均匀,还有这部分基数不大,所以数据就乱了,不具备可靠性;
对于新手Up来说想要涨粉,那就多投稿!!而且我也知道B站某些Up对粉丝数比对硬币还饥渴。。【蓝毛太太你再不更新麻将我要取关了嗷】
斜率17点多,大概意思就是,作为一个Up,你每投一稿涨粉小于17人就说明低于平均水平了吧。。大概。。【一个视频涨了几千粉,还有一些几十个视频就几个粉丝的都不在少数】
B站大概和腾讯一样,最近注册的号应该是号码逐个变大的,那么就说明账号id越小,资历越老,然后我就看了一下id段对应的粉丝数:
所以我的问题大概就是。。。中间那一段究竟是怎么回事啊?!有了解B站站务的可以告知一下么?为什么那部分基本没什么用户?特殊区间?会不会大概就是开放注册的分界线?
这并没有什么好奇怪的不是么?越先注册粉丝数越多,投稿数越多这很正常。【所以我为什么要把常识放上来?水字数】
然后把id按照一定长度分了一下段,看看每一段内成为Up的人数:
这也没什么好奇怪的,早期会员很多都专注搬运,而和现在开放注册后大量用户涌进B站不同。。
分析完这些乱起八糟可有可无的信息,开始分析一下另一些可有可无的信息:Up之间的关系;
先写两个小函数读取Up之间关注的关系,以及根据id获取昵称【Mathematica处理的时候与其用中文昵称来表示不如用id,因为B站某些Up们的昵称实在太奇葩了。。】:
由于Up们互相关注的数据条目实在太多了,我就只把互相关注的Up们的关系提取出来了,而“单恋”的就都被忽略了,如果有人想分析单恋的,只要把:
cor = Select[forelation, #[[3]] == 2 &];
改成
cor = Select[forelation, #[[3]] == 1 &];
即可;
【下面密集恐惧症病入膏肓者退散!!】
我以前说过,Mathematica中大数据可视化的能力是非常强大的【大概说过吧。。】,想要画出这些关系,只要一行:
图可(ken)能(ding)看不清,不过大概意思就是:除了左上那一团的Up主们的关注关系是在一个大网络中的【也就是所谓的社交网络】,而外部这些Up还是生活在自己的世界中的。【其实这个说法不然,他们可能关注了大社区里面的Up,但是没被反关注而已,我这里分析的是互粉的关系】
一万多人;然后再统计一下旁边的那些关系中,只有两人互相默默惺惺相惜的Up们的“pair数”:
没什么别的意思,我就是想告诉非Mma用户Mma分析这种东西很好用的!!【继续拉人入坑中】
孤岛Up主们没什么意思,我们更感兴趣的是中间那团大的,首先把它提取出来:
然后我们统计一下这坨大东西各个点的度,显然的,每一个度就表示这个Up和另一位Up互粉,看了一下最大值:
居然高达142,我瞬间感兴趣了,这些社交达人的Up们分别是谁,把前100名找出来【蓝毛太太你上榜了!!】:
恭喜oeasy大大勇夺第一,奖品是没有的!!啪啪啪啪啪啪啪。。。一眼望去我才发现这堆人我关注的都是游戏区的。。
刚才那团东西还是很大,我们为了提取骨干,还是要把无关的点挖掉,所以先找出度数比较大的那些点,然后重构这幅图:
然后写段小函数,把度数特别大的用特别的点标记一下:
好吧,不怎么明显。。【所以我为什么要把这种没用的东西放上来浪费流量?】
嗯,图片放在博客这里看不清是必然的。。【整个Mathematica的分析和结果文件放在github上了】
其实上面的那些乱七八糟的东西都是我自己乱捣鼓的,而且不怎么科学,因为你看看,我指定了所需要的图的每个点最小的度是15,但是最后的结果有些点的度数是1或者2的,原因很好理解,这些点在处理之前的度确实是大于15的,只是处理之后它周围大部分的点的度都是小于15的,所以都消失了。
如果想要获得一个复杂的图的骨干的话,最简单的方法其实还是去获得这个图的k核分量,也就是让剩余的点的所有度至少都要达到k,比如指定k=9:
一开始分析的时候我就想找到Up们的最大的圈子,就是说,所有Up里面,最多能找到多少人,这些人两两之间都是相互关注的。【感觉像面试题有木有。。】我想研究这个是因为最近B站某两个中学生Up绝交了。。【这种联想说明我脑洞特别大,别在意】
其实从算法层面上讲,这个问题就是图论里面的最大完全子图(Maximum Clique Problem)问题,而这是一个NPC问题,想要快速算出来是很难的,算得比较快都要靠启发式。
在最开始用Mathematica分析上面一大堆数据前,我就用python算了一下这个东西,不过我除了想要最大的子图的数据,还想要第二大,第三大。。。第n大,因为我下次闲着没事干了,可以去获取一下这些Up发布的视频的信息,根据发布的分区来验证:人与人会因为共同的兴趣而成为朋友这种显而易见的事。。【所以说,难得因为共同兴趣好不容易成为朋友,绝交是不好的】
大概算法就是先找到两两互粉的Up,然后历遍其余所有Up,看有没有Up对这两个人都分别互粉了,这样就得到了三个人两两互粉的数据,然后再找第四个人对这三个人都互粉了。。。结果我放在了这里;
其中要说明的一点事,n.txt
里面的数据是n个Up的互粉条目,而且保证了n.txt
里面的每一个条目都不会是n+1.txt
的子集;这样一个结果可以很方便地拿来专门给这些Up做好友推荐呢~
结果表明,B站的Up里面最大圈子是⑨人的圈子,这⑨人一直以来,两两互相关注,生死相依,山无棱,天地合,发誓永不绝交。。。【泥垢了】下面开始公布结果,这⑨个人就是:
寂寞的傲娇,Magus,小透明BAKA,ビリくん,她,96猫@141.2cm,CC子,兰豆子,白羽沉
还是老规矩,奖品没有!奖金请持枪到银行领取。鼓掌~啪啪啪啪啪。。。
我python跑这个结果花了超久超久(大量的in判断,明明都已经用上集合操作了,感觉是不是字典那部分比较慢?),但是!!!在Mathematica中,这种结果一行代码,光速出结果:
真的是秒出。。。而且再加个参数就可以获得n点完全子图了。。
上面k核分量图中k取了⑨,可以预计在那里面应该可以看见这次中奖的⑨个人:
大概就写到这里吧,该睡了。。我发现了一件事情诶:我最近开始熟练掌握用图片来撑博文篇幅这种神一般的技巧了!!!
再次声明一下吧:这里分析的绝对不代表本人对B站Up的态度(显然的嘛),纯属娱乐。下次有空再把Up们的视频信息爬下来分析一下,这样就可以根据视频的相似度对这些Up进行聚类,自行研究好友推荐系统神马的。。【嘛,估计这种话100%跳票定了,最近要开始搬恶心的砖了。。】
【完】
本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com
你确定这是在研究B站么……而不是把她解剖了放在显微镜下研究它的细胞及分子组成……23333
只是看了一下肝脏的结构而已,等我下次解剖一下肾脏看能不能拿去换部手机
我是来看删除线滴,哈哈
这次对 Mathematica 真是刮目相看了;分布果然符合典型的二八定律;你或许可以用 http://twitterfeed.com/ 发布到 Twitter 上。
每次用Mma的时候,感觉你不管想要实现什么功能都可以几行语句解决,所以就越玩越开心的样子。。但是堆了半天图,没有什么有价值的东西啊。。
好高级QAQ
虽然看不懂,但是我竟然一字一句看完了……话说菊苣这是将触手伸向B站的节奏吗
诶?会看不懂么?除了代码我觉得应该很好懂的呀。。B站我就是个观众,弹幕都不常发。。
不是文字层面的理解啦,是指不懂怎么去分析的之类B站同观众,弹幕基本只看不发,主要是很少在线看视频,一般都还是下载
太长了,表示只看到图以上内容。
喵!我的流量(╯°□°)╯︵ ┻━┻不过上课拿来打发时间还是不错的
废话这么多ˊ_>ˋ_____(●°u°●) 」Safari表示留言不能。提示饼干过期(╯°□°)╯︵ ┻━┻据说饼干过期都是因为停留太久,刷新一下页面就可以的。。
表示safari刷新5,6次都還是餅乾過期。。。於是我換chrome,應該就可以了?
嗯,果然可以了,這兩則comment就是用chrome發送的,,喵果然safari醬傲嬌了。。。
诶?是么,你的safari是pad的还是mac的?之前有人跟我说pad发不了,也是饼干的问题。。但是我之前用pad的发过。。。[难道会识别博主的?反正也是多说的问题。。我抢救不了。。
pad 果然兼容性有問題
能否和你进一步的探讨此类的信息资料呢? 我的QQ号是1063801068
好的呀。稍后切回windows的电脑后加你。。当前网络连在linux电脑上,,
居然是 .cn的域名
很正常啊
据说.cn限制挺大的
目前用了一年多了还没有遇到
只是传闻,大约我理解错了吧
围观 T_T
Mathematica 做图真赞
因为它很适合presentation时候展示用。。。【算了,就说这一句好了。。说好的不黑matlab的。。
巨巨up圈里窝一个都认不得。。。
大部分游戏区的,你可能不常逛。。
在b站这样一个社交性不强的网站也还是看到了邓巴数呢。http://zh.wikipedia.org/zh/%E9%82%93%E5%B7%B4%E6%95%B0
涨姿势了!
看到了几个熟悉的up主的名字
最近岚少那部猎师的好看么?求扫雷
岚少最近那两部我都还没看,既然你这么说了,待我这两天给你扫掉。
看了3p,感觉还可以,以解密和逃跑为主的游戏。女汉子和萌妹子的故事。
那个我昨晚刚补完了。。
好博客啊,,相见恨晚。。。数据分析,,,非常喜欢。。。
私下里很喜欢分析各种数据,但是还是太业余,挖不出什么有用的东西来。。
看你写抓取豆瓣的网页那个章节,其实我想知到你那边不会出现503服务器积极拒绝吗?
豆瓣?你指哪个?此文没有豆瓣章节吧。。如果是爬书那篇博文的话,MS没有,用的是豆瓣API,不是爬网页源码
前面的文章,,不是本文,,好的,,我在研究研究你写的代码。。。
好博客啊!已经推荐给许多许多朋友了= =
看我我不知道要说什么了……