首页 > 数据分析 > 胡乱分析一下B站Up主们那些乱七八糟的东西

胡乱分析一下B站Up主们那些乱七八糟的东西

2014年6月1日 发表评论 阅读评论

首先,这个题目,大概说明了。。。。。。我对博文要好好起题目这种事情已经完全放弃治疗了。

其次,如果你要觉得我会分析Up们的性格啊什么的,不好意思我真没这本事。。

再其次,没错,每次写博文正文之前我都喜欢乱扯废话。。。所以继续胡扯这篇博文出现的缘由,首先,最近一直在写python版本的B站的各种API(也就每晚看完番写上几行),然后突然觉得一个劲儿在写却不用来干点什么很没意思,看了一下那个又被放置Play了半个多月的VPS,决定用它抓点东西下来,反正有了自己封装的API了嘛,随手写了几行代码就扔上VPS去跑了;

当时扔上去的时候刚写完获取Up主们信息的那部分API,就让只抓了Up的信息下来。。。

抓下来后,碰上今天放假,实验室那群家伙回家的回家,消失的消失,基本没什么人剩下,要不是要给老板刻光碟我才懒得去。。下午无所事事就把这份数据拿来分析了一下;

说是分析,其实就是意识流地乱跑代码,想到哪写到哪,看有什么好玩的发生【实践表明:没有】。。

等我把API那部分捣鼓完我再写(shuǐ)一篇吧。。。。

好,继续闲扯,要怎么获取B站所有Up的信息呢?不想搞太麻烦的事情,简单一点,从某个Up作为种子出发,找出他所关注的全部人,然后再找出他关注的人所关注的人,爬虫一般抓下去,然后根据获取到的信息中投稿数来判断他是Up还是路人甲;好!问题来了,找谁当种子Up主呢?据说C8酱在B站触手无所不及,然后一看,呵呵,搞笑了,C8没关注任何人。。。
bilibili23

坐拥如此庞大后宫的真土壕C8居然不关注一下自己的后宫这样真的好么?233333

没办法,然后我想了一下,嗯,就找B站我喜欢的Up主来做种吧!嗯,就决定找自从生了小蓝毛后再也没更新过麻将视频的这货我写这一段就是催更的!!赶紧给我去打麻将更新视频啊!不然我要报警了!!蓝毛太太!!


爬取的时候我设了一下爬取间隔0.5秒,但是也测试了一下无缝爬取发现B站一直没封IP什么的,看来B站暂时没做这方面的防护,可能是觉得没什么人会像我这么无聊吧。。。

爬取下来的结果我放在了Github,还是那样,有爱自取。【另外我把我分析用的Python代码和Mathematica代码还有结果也放在上面了。。】

按照我上面描述的方法爬取下来的Up主个数是35114个,如果要说有漏的,那么基本上是没有任何人关注的Up了。。。

保存下来的信息包括Up的id,昵称,投稿数,粉丝数,关注列表这几个;


开始分析一个数据,我一般都是先看一下最基本的结果和常识是否相符:比如所有Up的投稿数的统计分布:
bilibili1

嗯,还行,其中绝大部分Up的投稿数都在150以内,超过150的只有571位,其中某位投稿数多达14000部Up在我分析中简直有如噪点般的存在。。。

然后看一下不同投稿数的Up的粉丝数,但是由于太乱,就统计了一下不同投稿数的Up们的平均粉丝个数:bilibili2

发现在投稿数不多的情况下,也就是新手Up,他们的平均粉丝数基本是线性增长的,而后面随着投稿数的增加,估计投稿质量不均匀,还有这部分基数不大,所以数据就乱了,不具备可靠性;

对于新手Up来说想要涨粉,那就多投稿!!而且我也知道B站某些Up对粉丝数比对硬币还饥渴。。【蓝毛太太你再不更新麻将我要取关了嗷

拿出前面这部分线性的点:bilibili3

然后线性拟合一下:
bilibili4

斜率17点多,大概意思就是,作为一个Up,你每投一稿涨粉小于17人就说明低于平均水平了吧。。大概。。【一个视频涨了几千粉,还有一些几十个视频就几个粉丝的都不在少数】

B站大概和腾讯一样,最近注册的号应该是号码逐个变大的,那么就说明账号id越小,资历越老,然后我就看了一下id段对应的粉丝数:

bilibili5

所以我的问题大概就是。。。中间那一段究竟是怎么回事啊?!有了解B站站务的可以告知一下么?为什么那部分基本没什么用户?特殊区间?会不会大概就是开放注册的分界线?

看了一下不同id段的Up的投稿数:
bilibili6

太密可能看不清,分区间统计一下就比较清晰了:
bilibili8

这并没有什么好奇怪的不是么?越先注册粉丝数越多,投稿数越多这很正常。【所以我为什么要把常识放上来?水字数

然后把id按照一定长度分了一下段,看看每一段内成为Up的人数:
bilibili7

这也没什么好奇怪的,早期会员很多都专注搬运,而和现在开放注册后大量用户涌进B站不同。。


分析完这些乱起八糟可有可无的信息,开始分析一下另一些可有可无的信息:Up之间的关系;

先写两个小函数读取Up之间关注的关系,以及根据id获取昵称【Mathematica处理的时候与其用中文昵称来表示不如用id,因为B站某些Up们的昵称实在太奇葩了。。】:
bilibili10

由于Up们互相关注的数据条目实在太多了,我就只把互相关注的Up们的关系提取出来了,而“单恋”的就都被忽略了,如果有人想分析单恋的,只要把:

cor = Select[forelation, #[[3]] == 2 &];

改成

cor = Select[forelation, #[[3]] == 1 &];

即可;

【下面密集恐惧症病入膏肓者退散!!】

我以前说过,Mathematica中大数据可视化的能力是非常强大的【大概说过吧。。】,想要画出这些关系,只要一行:
bilibili11

图可(ken)能(ding)看不清,不过大概意思就是:除了左上那一团的Up主们的关注关系是在一个大网络中的【也就是所谓的社交网络】,而外部这些Up还是生活在自己的世界中的。【其实这个说法不然,他们可能关注了大社区里面的Up,但是没被反关注而已,我这里分析的是互粉的关系】

随手统计了一下“大社会”中的Up们的个数:
bilibili12

一万多人;然后再统计一下旁边的那些关系中,只有两人互相默默惺惺相惜的Up们的“pair数”:
bilibili13

没什么别的意思,我就是想告诉非Mma用户Mma分析这种东西很好用的!!【继续拉人入坑中】

孤岛Up主们没什么意思,我们更感兴趣的是中间那团大的,首先把它提取出来:
bilibili14

然后我们统计一下这坨大东西各个点的度,显然的,每一个度就表示这个Up和另一位Up互粉,看了一下最大值:
bilibili15

居然高达142,我瞬间感兴趣了,这些社交达人的Up们分别是谁,把前100名找出来【蓝毛太太你上榜了!!】:
bilibili16

恭喜oeasy大大勇夺第一,奖品是没有的!!啪啪啪啪啪啪啪。。。一眼望去我才发现这堆人我关注的都是游戏区的。。

刚才那团东西还是很大,我们为了提取骨干,还是要把无关的点挖掉,所以先找出度数比较大的那些点,然后重构这幅图:
bilibili17

然后写段小函数,把度数特别大的用特别的点标记一下:

bilibili18

然后调用一下这个函数就可以了:
bilibili19

好吧,不怎么明显。。【所以我为什么要把这种没用的东西放上来浪费流量?】

然后为了看一下中心区域都是什么Up,就把名字标上了:
bilibili21

嗯,图片放在博客这里看不清是必然的。。【整个Mathematica的分析和结果文件放在github上了】

其实上面的那些乱七八糟的东西都是我自己乱捣鼓的,而且不怎么科学,因为你看看,我指定了所需要的图的每个点最小的度是15,但是最后的结果有些点的度数是1或者2的,原因很好理解,这些点在处理之前的度确实是大于15的,只是处理之后它周围大部分的点的度都是小于15的,所以都消失了。

如果想要获得一个复杂的图的骨干的话,最简单的方法其实还是去获得这个图的k核分量,也就是让剩余的点的所有度至少都要达到k,比如指定k=9:
bilibili30

加上Up的名字:
bilibili31


一开始分析的时候我就想找到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中,这种结果一行代码,光速出结果:
bilibili22

真的是秒出。。。而且再加个参数就可以获得n点完全子图了。。

上面k核分量图中k取了⑨,可以预计在那里面应该可以看见这次中奖的⑨个人:
bilibili32


大概就写到这里吧,该睡了。。我发现了一件事情诶:我最近开始熟练掌握用图片来撑博文篇幅这种神一般的技巧了!!!

再次声明一下吧:这里分析的绝对不代表本人对B站Up的态度(显然的嘛),纯属娱乐。下次有空再把Up们的视频信息爬下来分析一下,这样就可以根据视频的相似度对这些Up进行聚类,自行研究好友推荐系统神马的。。【嘛,估计这种话100%跳票定了,最近要开始搬恶心的砖了。。】


【完】

本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com

  • 你确定这是在研究B站么……而不是把她解剖了放在显微镜下研究它的细胞及分子组成……23333

    • 只是看了一下肝脏的结构而已,等我下次解剖一下肾脏看能不能拿去换部手机

  • jingtian

    我是来看删除线滴,哈哈

  • 这次对 Mathematica 真是刮目相看了;分布果然符合典型的二八定律;你或许可以用 http://twitterfeed.com/ 发布到 Twitter 上。

    • 每次用Mma的时候,感觉你不管想要实现什么功能都可以几行语句解决,所以就越玩越开心的样子。。但是堆了半天图,没有什么有价值的东西啊。。

  • 好高级QAQ

  • 虽然看不懂,但是我竟然一字一句看完了……话说菊苣这是将触手伸向B站的节奏吗

    • 诶?会看不懂么?除了代码我觉得应该很好懂的呀。。B站我就是个观众,弹幕都不常发。。

      • 不是文字层面的理解啦,是指不懂怎么去分析的之类B站同观众,弹幕基本只看不发,主要是很少在线看视频,一般都还是下载

  • 太长了,表示只看到图以上内容。

  • OX

    喵!我的流量(╯°□°)╯︵ ┻━┻不过上课拿来打发时间还是不错的废话这么多ˊ_>ˋ_____(●°u°●)​ 」Safari表示留言不能。提示饼干过期(╯°□°)╯︵ ┻━┻

    • 据说饼干过期都是因为停留太久,刷新一下页面就可以的。。

      • OX

        表示safari刷新5,6次都還是餅乾過期。。。於是我換chrome,應該就可以了?

        • OX

          嗯,果然可以了,這兩則comment就是用chrome發送的,,喵果然safari醬傲嬌了。。。

          • 诶?是么,你的safari是pad的还是mac的?之前有人跟我说pad发不了,也是饼干的问题。。但是我之前用pad的发过。。。[难道会识别博主的?反正也是多说的问题。。我抢救不了。。

            • OX

              pad 果然兼容性有問題

  • 能否和你进一步的探讨此类的信息资料呢? 我的QQ号是1063801068

    • 好的呀。稍后切回windows的电脑后加你。。当前网络连在linux电脑上,,

    • Yu

      居然是 .cn的域名

      • 很正常啊

        • Yu

          据说.cn限制挺大的

          • 目前用了一年多了还没有遇到

            • Yu

              只是传闻,大约我理解错了吧

  • 围观 T_T

  • Yu

    Mathematica 做图真赞

    • 因为它很适合presentation时候展示用。。。【算了,就说这一句好了。。说好的不黑matlab的。。

  • yuki

    巨巨up圈里窝一个都认不得。。。

    • 大部分游戏区的,你可能不常逛。。

  • tcya

    在b站这样一个社交性不强的网站也还是看到了邓巴数呢。http://zh.wikipedia.org/zh/%E9%82%93%E5%B7%B4%E6%95%B0

  • 看到了几个熟悉的up主的名字

    • 最近岚少那部猎师的好看么?求扫雷

      • 岚少最近那两部我都还没看,既然你这么说了,待我这两天给你扫掉。

      • 看了3p,感觉还可以,以解密和逃跑为主的游戏。女汉子和萌妹子的故事。

        • 那个我昨晚刚补完了。。

  • hwj888

    好博客啊,,相见恨晚。。。数据分析,,,非常喜欢。。。

    • 私下里很喜欢分析各种数据,但是还是太业余,挖不出什么有用的东西来。。

      • hwj888

        看你写抓取豆瓣的网页那个章节,其实我想知到你那边不会出现503服务器积极拒绝吗?

        • 豆瓣?你指哪个?此文没有豆瓣章节吧。。如果是爬书那篇博文的话,MS没有,用的是豆瓣API,不是爬网页源码

          • hwj888

            前面的文章,,不是本文,,好的,,我在研究研究你写的代码。。。

  • AAA

    好博客啊!已经推荐给许多许多朋友了= =

  • 看我我不知道要说什么了……