歡迎光臨
每天分享高質量文章

Python爬取394452條《都挺好》彈幕資料,比劇情還精彩?

導讀:最近《都挺好》真的挺火。

火到什麼程度?微博熱搜霸榜,辦公室評彈聲四起,大強輕鬆攻佔表情包,甚至連 N 年不追劇的“瘦宅”們也開始沉迷其中,大呼真香。

劇很精彩,但追劇界有句俗話說得好:“彈幕往往比劇更精彩”,為了讓精彩延續下去,我終究沒能忍住對(騰訊影片)彈幕下手。

經過一番折騰,發現彈幕是 JSON 格式動態載入的,而且載入得非常有規律,30 秒一發(80-100 條),多出的會隱藏。共計爬取了 394452 條彈幕(雨露均霑,每集平均 8575 條,每 30s 的間隔爬取),來挖一挖彈幕這個寶藏。

 

 

作者:周志鵬

來源:資料不吹牛

▲圖源微博畫手@馬裡奧小黃

 

 

01 彈幕基本盤概覽

 

爬到的源資料是醬紫的:

發現有部分使用者名稱是缺失的,由於這部分使用者佔比很小(僅 0.61%),所以我們直接暴力除去這部分噪聲。

清洗之後,還剩下 117484 個使用者傳送的 392051 條彈幕,人均傳送彈幕量 3.34 條。

再看看每個人傳送彈幕數是怎麼樣分佈的:

顯而易見,大部分使用者還是比較佛系的,71607 位使用者(佔比 60.95%)在 46 集中只傳送過 1 條彈幕,他們內心嚴格遵循“愛就一個字,我只發一次”的彈幕傳送準則。

傳送條數在 3 條及以內的使用者數佔比達到了 83.73%,他們累計貢獻了 133331 條彈幕,佔到彈幕總數的 34.01%,反過來看,剩下 16.27% 的使用者貢獻了彈幕量的 65.99%。從這個角度來看,二八法則在這裡更像是二七法則(20% 的使用者貢獻了 70% 的內容)。

 

02 是誰在瘋狂發射彈幕,而彈幕又愛上了誰

 

1. 彈幕傳送量 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”、“來了”之類毫無意義的內容來霸榜,所以我把他的輸出內容篩了出來並做成詞雲圖:

這……這位大佬輸出的內容,不僅緊貼劇情,更是文風多變,時而總結內容,時而嬉笑怒罵,時而感慨人生,時而出口成詩,毫不誇張的說比一般彈幕都要有內涵。

我的膝蓋,開始不聽使喚了……

唯有疾呼“高山(頻)仰止,景行行止”。

2. 誰的彈幕最受青睞(點贊數最多)

根據每個使用者累計點贊量排序,Get 到彈幕點贊 TOP10 排行榜:

第一名“追劇小奶鵝”平均每集發 6 條彈幕,每條彈幕竟然能夠得到 4585 個贊!難道這就是傳說中的精神領袖嗎?難道大佬之外還有大佬嗎?

在看劇的時候經常能夠被他的彈幕刷屏,而且他的彈幕比其他人停留時間更長,顏色更艷麗。經核實,發現第一名,原來是“嫡系”:

騰訊影片電視劇彈幕專業陪聊,怪不得這麼高的贊。

而第二名,又是我們的大佬“@L”,他憑藉高頻、穩定、持續輸出累計獲得 21.69 萬贊,平均每條彈幕獲贊 78.22 個。

大佬,請收下我的膝蓋!

3. 高贊彈幕有何套路

3.1 嫡系部隊

我們單獨把騰訊的嫡系部隊“追劇小奶鵝”拎出來,是因為他幾乎壟斷了高贊彈幕 Top300,嫡系光環加持,贊或許有虛高的嫌疑,但不妨礙我們單獨分析他內容的套路(其實不少小奶鵝的彈幕並沒有其他的精彩,但畢竟是親兒子):

暴力總結起來就一句話:對仗工整提大強,感天動地誇明玉。

3.2 非嫡系部隊

高贊的(非嫡系)朋友們深得演唱會那句帶節奏名言“現場的朋友們,舉起你們的雙手,讓我看到你們的熱情”的真傳。

“覺得 XX 說得對點下謝謝”“給 XX 點贊!”套路是獲贊的一大法寶,另一法寶就是推動劇情的內容總結了。

 

03 彈幕視角主人公情感分析

 

1. 誰是蘇家最受彈幕關註的人兒

要分析誰是蘇家最受彈幕關註的人,必須先根據關鍵詞去甄別和定位到劇中角色。

這裡列出了關於蘇家人的簡單詞庫,用來識別彈幕在議論誰。

54.31% 的彈幕沒有主觀傾向性,沒有提及具體的蘇家人(可能提及了劇中其他人,這裡暫不考慮)。

明玉竟然搶過了大強的寶座,以 19.91% 的彈幕提及率拔得頭籌,而大強則以 16.16% 的關註度緊隨其後。

Emmm,無論是劇外熱度還是追劇時彈幕槽點,我都覺得大強應該才是最受關註的啊!

作為一個嚴謹的追劇人,我開始排查彈幕,發現了很多戲精在發彈幕時都玩起了角色扮演,他們在發彈幕時,總是先在開頭署名“蘇明玉:” or 其他劇中角色,彷彿在代他們發聲。

清洗完這部分調皮的使用者之後,排名出現了新的變化:

果然,其他除外,大強以 15.16% 的關註佔比領先其他家人一個身位,明玉又把兩個哥哥拉開了一個身位的距離,佔比 8.82%,明成和明哲關註佔比分別是 4.84% 和 4.28%。

P.S. 明成關註度之所以低,是因為很多彈幕罵人並不會指名道姓:),而明哲嘛,對這個排名錶示很失望。

2. 彈幕情感分析

看劇(彈幕)時能夠明顯感覺到觀眾對於明成的態度從最開始的“過街老鼠,人人喊打”到後來的“明成懂事了”。

從資料分析的角度講,明成是否成功洗白?大強最後催淚演繹效果如何?

這裡我們呼叫百度情感分析 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年資料分析,深切感受到資料分析的有趣和學習過程中缺少案例的無奈,遂新開公眾號「資料不吹牛」,定期更新資料分析相關技巧和有趣案例(含實戰資料集)。

    贊(0)

    分享創造快樂