Python爬取394452條《都挺好》彈幕數據,發現彈幕比劇還精彩?
狂野男孩大強下線的第三天,想他,想他,想他……打開今日頭條,查看更多圖片
圖源《都挺好》官微
作者 | 周志鵬
責編 | 仲培藝
最近《都挺好》真的挺火。
火到什麼程度?微博熱搜霸榜,辦公室評彈聲四起,大強輕鬆攻佔表情包,甚至連 N 年不追劇的「瘦宅」們也開始沉迷其中,大呼真香。
圖源微博畫手@馬里奧小黃
劇很精彩,但追劇界有句俗話說得好:「彈幕往往比劇更精彩」,為了讓精彩延續下去,我終究沒能忍住對(騰訊視頻)彈幕下手。
經過一番折騰,發現彈幕是 JSON 格式動態載入的,而且載入得非常有規律,30 秒一發(80-100 條),多出的會隱藏。共計爬取了 394452 條彈幕(雨露均沾,每集平均 8575 條,每 30s 的間隔爬取),來挖一挖彈幕這個寶藏。
彈幕基本盤概覽
爬到的源數據是醬紫的:
發現有部分用戶名是缺失的,由於這部分用戶佔比很小(僅 0.61%),所以我們直接暴力除去這部分雜訊。
清洗之後,還剩下 117484 個用戶發送的 392051 條彈幕,人均發送彈幕量 3.34 條。
再看看每個人發送彈幕數是怎麼樣分布的:
顯而易見,大部分用戶還是比較佛系的,71607 位用戶(佔比 60.95%)在 46 集中只發送過 1 條彈幕,他們內心嚴格遵循「愛就一個字,我只發一次」的彈幕發送準則。
發送條數在 3 條及以內的用戶數佔比達到了 83.73%,他們累計貢獻了 133331 條彈幕,佔到彈幕總數的 34.01%,反過來看,剩下 16.27% 的用戶貢獻了彈幕量的 65.99%。從這個角度來看,二八法則在這裡更像是二七法則(20% 的用戶貢獻了 70% 的內容)。
是誰在瘋狂發射彈幕,而彈幕又愛上了誰
彈幕發送量 Top10 榜單
我們都知道明成是「行走的造糞機」,那麼從彈幕的角度來看,誰是「行走的彈幕發射機」呢?
為此,我們篩選出累計發送彈幕 Top10 的用戶:
微微一操作(爬取、清洗和分析都使用 Python)
danmu_counts = df.groupby("用戶名")["評論id"].count().sort_values(ascending= False).reset_index()
danmu_counts.columns = ["用戶名","累計發送彈幕數"]
danmu_counts.head(10)
上一步我們知道平均每個人在整部劇會發送 3.34 條彈幕,而彈幕發送排行榜前十的旁友們發送量都是過千級別的,我們再加上這個用戶彈幕發送涉及到的集數,進一步看看平均每集發送彈幕數。為了更直觀一些,可視化之:
一位名叫「@L」的用戶獨佔鰲頭,是毋庸置疑的 C 位輸出。在 46 集的電視劇中,他的彈幕血洗了 32 集,累計發射 2773 條彈幕,平均每集發送 86.66 條。
什麼概念呢?
一集電視劇時長約 42 分鐘,也就是說,這位大佬在看劇的同時,仍能保持每分鐘 2.06 條的發送頻次,還堅持了 32 集。
到這裡大家一定會有質疑,覺得他肯定是刷了大量的「666」、「來了」之類毫無意義的內容來霸榜,所以我把他的輸出內容篩了出來並做成詞雲圖:
這……這位大佬輸出的內容,不僅緊貼劇情,更是文風多變,時而總結內容,時而嬉笑怒罵,時而感慨人生,時而出口成詩,毫不誇張的說比一般彈幕都要有內涵。
我的膝蓋,開始不聽使喚了......
唯有疾呼「高山(頻)仰止,景行行止」。
誰的彈幕最受青睞(點贊數最多)
根據每個用戶累計點贊量排序,Get 到彈幕點贊 TOP10 排行榜:
第一名「追劇小奶鵝」平均每集發 6 條彈幕,每條彈幕竟然能夠得到 4585 個贊!難道這就是傳說中的精神領袖嗎?難道大佬之外還有大佬嗎?
在看劇的時候經常能夠被他的彈幕刷屏,而且他的彈幕比其他人停留時間更長,顏色更艷麗。經核實,發現第一名,原來是「嫡系」:
騰訊視頻電視劇彈幕專業陪聊,怪不得這麼高的贊。
而第二名,又是我們的大佬「@L」,他憑藉高頻、穩定、持續輸出累計獲得 21.69 萬贊,平均每條彈幕獲贊 78.22 個。
大佬,請收下我的膝蓋!
高贊彈幕有何套路
A)嫡系部隊:
我們單獨把騰訊的嫡系部隊「追劇小奶鵝」拎出來,是因為他幾乎壟斷了高贊彈幕 Top300,嫡系光環加持,贊或許有虛高的嫌疑,但不妨礙我們單獨分析他內容的套路(其實不少小奶鵝的彈幕並沒有其他的精彩,但畢竟是親兒子):
暴力總結起來就一句話:對仗工整提大強,感天動地誇明玉。
B)非嫡系部隊:
高贊的(非嫡系)朋友們深得演唱會那句帶節奏名言「現場的朋友們,舉起你們的雙手,讓我看到你們的熱情」的真傳。
「覺得 XX 說得對點下謝謝」、「給 XX 點贊!」套路是獲贊的一大法寶,另一法寶就是推動劇情的內容總結了。
彈幕視角主人公情感分析
誰是蘇家最受彈幕關注的人兒
要分析誰是蘇家最受彈幕關注的人,必須先根據關鍵詞去甄別和定位到劇中角色。
這裡列出了關於蘇家人的簡單詞庫,用來識別彈幕在議論誰。
54.31% 的彈幕沒有主觀傾向性,沒有提及具體的蘇家人(可能提及了劇中其他人,這裡暫不考慮)。
明玉竟然搶過了大強的寶座,以 19.91% 的彈幕提及率拔得頭籌,而大強則以 16.16% 的關注度緊隨其後。
Emmm,無論是劇外熱度還是追劇時彈幕槽點,我都覺得大強應該才是最受關注的啊!
作為一個嚴謹的追劇人,我開始排查彈幕,發現了很多戲精在發彈幕時都玩起了角色扮演,他們在發彈幕時,總是先在開頭署名「蘇明玉:」 or 其他劇中角色,彷彿在代他們發聲。
清洗完這部分調皮的用戶之後,排名出現了新的變化:
果然,其他除外,大強以 15.16% 的關注佔比領先其他家人一個身位,明玉又把兩個哥哥拉開了一個身位的距離,佔比 8.82%,明成和明哲關注佔比分別是 4.84% 和 4.28%。
P.S. 明成關注度之所以低,是因為很多彈幕罵人並不會指名道姓:),而明哲嘛,對這個排名表示很失望。
彈幕情感分析
看劇(彈幕)時能夠明顯感覺到觀眾對於明成的態度從最開始的「過街老鼠,人人喊打」到後來的「明成懂事了」。
從數據分析的角度講,明成是否成功洗白?大強最後催淚演繹效果如何?
這裡我們調用百度情感分析 API,對每一條評價的內容進行情感打分,用情感分值來驗證上述問題(分值在 0-1 之間,越靠近 0 負面傾向越強,越接近 1 則情感越情面)。
調用方法很簡單:
#先安裝aip包
from aip import AipNlp
#到後台配置許可權,獲得相關ID和KEY,目前API是免費且不限量的
app_id = "輸入實際ID"
api_key = "輸入實際KEY"
secret_key = "輸入實際SECRET_KEY"
client = AipNlp(app_id,api_key,secret_key)
#定義函數,以便循環爬取
def senti_analy(text):
data = client.sentimentClassify(text)
sentiment = data["items"][0]["positive_prob"]
return sentiment
for text in df["內容"]:
try:
sentiments.append(senti_analy(text))
except:
#print(text)
sentiments.append("pass")
df["情感分值"] = sentiments
打分篩選過後,我們統計出每一集蘇家每個人的平均情感分值,並繪製出曲線圖(4 個人導致折線圖可讀性較差,所以只有委屈大哥了):
1. 大強開局不錯,和明玉持平,但憑藉倪老師「作死小能手」的實力詮釋,讓情感分值迅速走低,11 集的低點正式印證了大強的「癲瘋之作」,之後分值在 0.38 左右徘徊。隨著「蔡根花寶貝」梗的出現,「嘲諷」替代了指責,讓分值略微上浮(情感打分對於高級黑式嘲諷難以準確判斷)。最後老年痴呆發病後大強對明玉的愛讓分值一舉超過 0.5,達到歷史峰值,成功上岸。
2. 明玉是原生家庭的受害者,也是一個靠自己成功的女強人,前期愛恨分明,情感分值一度飆到 0.59(超過其他所有角色),18 集開始的買房紛爭,網友紛紛表示強烈同情(例:明玉不能像十年前一樣別理他們嗎?情感分值只有 0.041),這讓明玉相關的情感分值嚴重走低,隨後彈幕主旋律仍以叫好和同情為主。
3. 明成的情感分值走勢更有意思,開局最低,靠欺負妹妹讓分值迅速降低,可謂「人人喊打」,後面則分值飆升,一度追上明玉,主要是因為明成期望值已經極低,但是他寵老婆的行為得到觀眾認可。中期本色挨罵,降至低谷。27 集明成情感分值再次超過 0.5,竟然是因為明成想嚇走大強進行的一系列騷操作(尤其是廣場舞)。再後來就是明成幡然悔悟,走上正軌,分值在穩定在 0.45 左右,也算成功洗白。
看來,開局降期望,中期隨便作,後期催淚逆風翻盤,終究還是會被觀眾接受。
作者:周志鵬,2年數據分析,深切感受到數據分析的有趣和學習過程中缺少案例的無奈,遂新開公眾號「數據不吹牛」,定期更新數據分析相關技巧和有趣案例(含實戰數據集),歡迎大家關注交流。聲明:本文為作者投稿,版權歸其所有。
※54 歲的噹噹李國慶「殺入」區塊鏈!
※谷歌、Facebook 大規模宕機!「裸奔時代」程序員該怎麼辦?
TAG:CSDN |