對B站彈幕數據分析及可視化的小例子

最近在上數據可視化的課,要做一個大作業,有感於一篇關於檢測鬥魚直播是否有機器人的知乎文章zhuanlan.zhihu.com/p/25,就想到了b站。b站的彈幕也是含有了大量的數據,應該可以一試。這篇文章加以改進一般可以當作一個小課題或大作業,應該還是挺有意思的,創意也新。

選用開發工具:python,Echart

首先來獲取彈幕文件,參考選取了一個荒野求生的視頻,F10打開編輯模式,選擇network選項,找到一個純數字的xml文件,雙擊打開就是我們所需要的彈幕文件。

文件內是這個樣子。

至於數字代表的內容,選取一個示例:

關於B站彈幕XML文件中的參數分別代表什麼含義_百度知道

第一個參數是彈幕出現的時間以秒數為單位。

第二個參數是彈幕的模式1..3 滾動彈幕 4底端彈幕 5頂端彈幕 6.逆向彈幕 7精準定位 8高級彈幕

第三個參數是字型大小, 12非常小,16特小,18小,25中,36大,45很大,64特別大

第四個參數是字體的顏色 以HTML顏色的十位數為準

第五個參數是Unix格式的時間戳。基準時間為 1970-1-1 08:00:00

第六個參數是彈幕池 0普通池 1字幕池 2特殊池 【目前特殊池為高級彈幕專用】

第七個參數是發送者的ID,用於「屏蔽此彈幕的發送者」功能

第八個參數是彈幕在彈幕資料庫中rowID 用於「歷史彈幕」功能。

知道了這些數字的意義,就有許多東西值得分析了。我獲取了荒野求生視頻集中的49個視頻彈幕,差不多130000條,因為只有49個文件就沒有寫爬蟲,後續會學習一下。

下一步就是讀取這些xml文件存到數組裡,這裡方法網上有很多,就不介紹了,代碼最後也會有,方便大家。

我準備對彈幕的相對時間,作者和語句三個方面進行分析。

首先是每集彈幕量分布情況,橫軸是集數,縱軸是彈幕量,數據都是在python中處理好在Echart中進行可視化圖表,Echart是一個繪製圖表的國內網站,語言是JS,有著大量的示例,花很少的時間就能做出效果。

從圖表看到,前幾集的彈幕很多,以後越來越少,最後一集又多了一點,估計大家在完結撒花。。很符合b站的規律= =,值得注意的是31集突然增多,回去看了一下是特別推薦集,抓鱷魚的。。

接下來是一集里的彈幕量和時間的關係,橫軸的時間以10秒為單位,264截止也就是2640秒,約46分鐘。可以看到有許多尖峰,肯定都是貝爺的「精彩時刻」= = 覺得b站可以利用彈幕來進行精彩時刻定位啊,都不用手工標註,靠著人民群眾的彈幕就標出來了,方便大家快進。

不過也不是所有都是精彩時刻。。比如說其中一個尖峰是喜聞樂見的時間簽到時間。。

接下來我們通過作者這個維度分析一下。

可以看到有一半人發送了一條彈幕,(應該更多的人沒有發送彈幕。。未統計),像我自己逛了5,6年b站估計一共也就發了十幾條。。慚愧。。

可以發現第一名發送了近700條,49個視頻平均一集發送十幾條,真是貝爺的死忠粉。。

最後根據彈幕製作了個詞雲,可以直觀的顯示出彈幕的詞頻。

通常先用jieba分詞模塊進行分詞,再去除停用詞,最後使用wordcloud模塊進行繪製。

經統計,貝爺這個詞出現了12000多次,平均10條彈幕就有一條含有貝爺。。

另外心疼攝影師。。

基本就簡單分析了這麼多,大概也夠一個大作業的量了,當然彈幕這個東西往深了做還是很有挖掘空間的,挖取海量的彈幕來做一些用戶的行為預測什麼的,哈哈

第一次寫知乎,感覺寫這個也不白看了這麼多年b站。。本來想找個動漫分析的。。怕是講ppt不好看。。


推薦閱讀:

樸素貝葉斯演算法和R語言
談談機器學習與數據分析中的問題定義
Capsule network--《Dynamic Routing Between Capsules》
機器學習中正則化項L1和L2的直觀理解
線性回歸和邏輯回歸代碼部分(五)

TAG:嗶哩嗶哩 | 數據分析 | 機器學習 |