1. 程式人生 > 實用技巧 >Python分析最近大火的網劇《隱祕的角落》,看看網友們有什麼看法

Python分析最近大火的網劇《隱祕的角落》,看看網友們有什麼看法

前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。

估計最近很火的連續劇《隱祕的角落》大家趁著端午假期都看過了吧?小編也跟著潮流,一口氣把12集的連續劇全部看完了。看過的人肯定對朋友圈裡有人發的“一起去爬山”、“小白船”、“還有機會嗎”的意思心照不宣。沒看過的,如果已為人父人母的,強烈要求看一下。

劇很精彩,但追劇界有句俗話說得好:“彈幕往往比劇更精彩”,為了讓精彩延續下去,咱們來看看該劇彈幕的部分。電視劇是在愛奇藝獨播,因此從愛奇藝上爬蟲最為合適。

爬取彈幕

愛奇藝的彈幕資料是以 .z 形式的壓縮檔案存在的,先獲取 tvid 列表,再根據 tvid 獲取彈幕的壓縮檔案,最後對其進行解壓及儲存,大概就是這樣一個過程。

def get_data(tv_name,tv_id):
url = https://cmts.iqiyi.com/bullet/{}/{}/{}_300_{}.z
datas = pd.DataFrame(columns=[uid,contentsId,contents,likeCount])
for i in range(1,20):
myUrl = url.format(tv_id[-4:-2],tv_id[-2:],tv_id,i)
print(myUrl)
res = requests.get(myUrl)
if res.status_code == 200:
btArr = bytearray(res.content)
xml=zlib.decompress(btArr).decode(utf-8)
bs = BeautifulSoup(xml,"xml")
data = pd.DataFrame(columns=[uid,contentsId,contents,likeCount])
data[uid] = [i.text for i in bs.findAll(uid)]
data[contentsId] = [i.text for i in bs.findAll(contentId)]
data[contents] = [i.text for i in bs.findAll(content)]
data[likeCount] = [i.text for i in bs.findAll(likeCount)]
else:
break
datas = pd.concat([datas,data],ignore_index = True)
datas[tv_name]= str(tv_name)
return datas

共爬取得到201865 條《隱祕的角落》彈幕資料。

彈幕發射器

按照使用者id分組並對彈幕id計數,可以得到每位使用者的累計傳送彈幕數。

#累計傳送彈幕數的使用者
danmu_counts = df.groupby(uid)[contentsId].count().sort_values(ascending = False).reset_index()
danmu_counts.columns = [使用者id,累計傳送彈幕數]
danmu_counts.head()

累計傳送彈幕數使用者top5

第一名竟然傳送了2561條彈幕,這只是一部12集的網劇啊。

難道他/她是水軍?每條都發的差不多?

df_top1 = df[df[uid] == 1810351987].sort_values(by="likeCount",ascending = False).reset_index()
df_top1.head(10)

然而並不是,每一條彈幕都是這位觀眾的有感而發,可能他/她只是在發彈幕的同時順便看看劇吧。

這位“彈幕發射器”朋友,在每一集的彈幕量又是如何呢?

分集&平均彈幕量

是不是通過上圖可以側面說明個別劇集的戲劇衝突更大,更能引發觀眾吐槽呢?

“彈幕發射器”同志,11、12集請加大輸出!

這些彈幕大家都認同

拋開“彈幕發射器”同志,我們繼續探究一下分集的彈幕。

看看每一集當中,哪些彈幕大家都很認同(贊)?

df_like = df[df.groupby([tv_name])[likeCount].rank(method="first", ascending=False)==1].reset_index()[[tv_name,contents,likeCount]]
df_like.columns = [劇集,彈幕,贊]
df_like

每一集中點贊最多的彈幕

每一集的最佳彈幕都是當集劇情的濃縮,這些就是觀眾們票選出來的梗(吐槽)啊!

應該不算劇透吧,不算吧,不算吧

實在不行我請你去爬山也可

總結

除了劇本、音樂等,“老戲骨”和“小演員”們的演技也獲得了網友的一致好評。

這部劇雖然短短12集,但故事線不僅僅在一兩個人身上。每個人都有自己背後的故事,又因為種種巧合串聯在一起,引發觀眾的持續性討論。

我們統計一下演員們在彈幕中的出現次數,看看劇中的哪些角色大家提及最多