一起爬山嗎?Python爬取並分析 201865 條《隱秘的角落》彈幕

2021-03-02 Crossin的編程教室

本文不涉及劇透!請放心食用

最近又火了一部國產劇:《隱秘的角落》

如果你沒看過,那可能會對朋友圈裡大家說的「一起去爬山」、「小白船」、「還有機會嗎」感到莫名其妙。

今天我們就來用Python爬一爬這部熱門劇的彈幕,看看大家都在聊什麼?由於《隱秘的角落》是在愛奇藝獨播,所以數據從愛奇藝下手最直接。

除了愛奇藝,可以考慮使用豆瓣、微博、知乎(電視劇數據分析 · 萬能三件套)的數據。

爬蟲

劇很精彩,但追劇界有句俗話說得好:「彈幕往往比劇更精彩」,為了讓精彩延續下去,我終究沒能忍住對彈幕下手。[1]

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

這裡參考了「數據兔小白[2]的代碼,我又修改後實現分集爬取所有彈幕。

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集,但故事線不僅僅在一兩個人身上。每個人都有自己背後的故事,又因為種種巧合串聯在一起,引發觀眾的持續性討論。

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

a = {'張東升':'東升|秦昊|張老師', '朱朝陽':'朝陽', '嚴良':'嚴良', '普普':'普普', '朱永平':'朱永平', '周春紅':'春紅|大娘子', '王瑤':'王瑤', '徐靜':'徐靜|黃米依', '陳冠聲':'王景春|老陳|陳冠聲', '葉軍':'葉軍|皮卡皮卡', '馬主任':'主任|老馬', '朱晶晶':'晶晶','葉馳敏':'葉馳敏'}
for key, value in a.items():
    df[key] = df['contents'].str.contains(value)
staff_count = pd.Series({key: df.loc[df[key], 'contentsId'].count() for key in a.keys()}).sort_values()

先計算出現次數,再利用pyecharts製作極坐標圖。

彈幕中提到的主要演員

比較讓我疑惑的三個小孩當中的朱朝陽提及量這麼低,按理說應該與其其他兩位大體相當啊。

又去源數據看了一遍,提及朱朝陽(朝陽)的彈幕確實很少,因為大部分在彈幕中觀眾一般就叫他「學霸」、「兒子」之類的了。

詞雲

總所周知,一篇數分文章不能少了詞雲。

每篇的詞雲都儘量用不同的方式。這次我採用的是stylecloud,它算是wordcloud詞雲包的升級版,看起來美觀多了。

import stylecloud
from IPython.display import Image 

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fas fa-play-circle',size=400,
                          output_name='隱秘的角落-詞雲.png')
Image(filename='隱秘的角落-詞雲.png')

20萬條彈幕詞雲

除了主角的名字以外,在這部以「孩子」為主題的劇中,對孩子的思想、行為的探討佔據重要部分,另外,劇中從年長的戲骨到年幼的孩子,每一個人都貢獻了高光的演技,對他們演技的稱讚也成為高頻詞彙。

而最出圈的「爬山」梗,更是被頻頻提及。

一起爬山嗎?

從《無證之罪》到《隱秘的角落》,都在證明懸疑犯罪題材在當下並非沒有市場,要收穫高人氣高口碑,如何傳播與營銷終歸只是手段,越來越多的團隊沉下心來打磨精品劇集,觀眾才會願意為劇買單,讓「爬山」這樣的梗一步步「出圈」。

https://alltodata.cowtransfer.com/s/5b483c08987243

參考文章

[1] 小z,數據不吹牛: 《Python 爬取 394452 條《都挺好》彈幕數據,發現彈幕比劇還精彩?》
[2] 數據兔小白: 爬取愛奇藝彈幕後,我找到了共鳴

相關焦點

  • Python 爬取 201865 條《隱秘的角落》彈幕,發現看劇不如爬山?
    如果你沒看過,那可能會對朋友圈裡大家說的「一起去爬山」、「小白船」、「還有機會嗎」感到莫名其妙。暑期推薦旅遊(來源微博)小五在這個端午假期也趕緊刷完了本劇,必須要寫篇文章了。由於《隱秘的角落》是在愛奇藝獨播,所以數據從愛奇藝下手最直接。
  • 《隱秘的角落》、「一起爬山嗎?」用英文怎麼說?
    最近口碑爆棚的《隱秘的角落》不知道大家看了嗎?反正我的朋友圈已經有很多人在安利這部劇了……所以今天咱們就來聊聊跟這部劇有關的一些翻譯……首先我們來看下劇名,由於《隱秘的角落》改編自小說《壞小孩》,所以官方給它取的英文名是The bad kids。
  • 「一起爬山嗎?」——從《隱秘的角落》看國產懸疑劇破圈
    雖然《隱秘的角落》憑藉口口相傳的好口碑掀起了國產懸疑劇追劇熱潮,但並不是每一部懸疑劇都有機遇取得這樣的成績,資方投資時面臨的風險仍然很大,對懸疑劇的信心也需要進一步重塑。因此,懸疑劇未來的發展依然是行業面臨的嚴峻考驗。《隱秘的角落》何以口碑流量雙豐收?它破圈的背後存在哪些原因呢?
  • Python 爬取 394452 條《都挺好》彈幕數據,發現彈幕比劇還精彩?
    劇很精彩,但追劇界有句俗話說得好:「彈幕往往比劇更精彩」,為了讓精彩延續下去,我終究沒能忍住對(騰訊視頻)彈幕下手。經過一番折騰,發現彈幕是 JSON 格式動態加載的,而且加載得非常有規律,30 秒一發(80-100 條),多出的會隱藏。共計爬取了 394452 條彈幕(雨露均沾,每集平均 8575 條,每 30s 的間隔爬取),來挖一挖彈幕這個寶藏。
  • 一起爬山嗎?快來Get《隱秘的角落》同款英語!
    一起爬山嗎?我還有機會嗎?熟悉的同學們可能知道,這些看似平和親切的話語,均來自最近火爆全網(豆瓣評分高達9.0)的犯罪懸疑網劇(web mystery drama)《隱秘的角落》。隨著這部劇的大火,「一起爬山嗎」、「我還有機會嗎」變成了人們熱議的「索命梗」。
  • 一起爬山嗎?到底爬的是什麼山?
    今年夏天最直擊靈魂的發問:「一起爬山嗎?」這句話從網劇《隱秘的角落》的情節中衍生而來,劇中角色張東升(秦昊 飾)帶著嶽父母去爬六峰山,這句話從網劇《隱秘的角落》的情節中衍生而來,劇中角色張東升(秦昊 飾)帶著嶽父母去爬六峰山,假裝體貼地幫他們拍照、擺造型,然後趁機將二老推下山。
  • 《隱秘的角落》爆火,「一起爬山嗎」刷屏!相關英文怎麼說?
    一起爬山嗎?我還有機會嗎?熟悉的同學們可能知道,這些看似平和親切的話語,均來自最近火爆全網(豆瓣評分高達9.0)的 犯罪懸疑網劇(web mystery drama)《隱秘的角落》,隨著這部劇的大火,變成了人們熱議的「索命梗」。
  • 「一起爬山嗎?我還有機會嗎?」《隱秘的角落》這些梗英語怎麼說?
    導語最近一直被朋友圈、被熱搜瘋狂安利《隱秘的角落》這部劇,剛開始當聽到有人問「一起爬山嗎」的時候,其實我是一臉問號的,怎麼?咋出來一個爬山梗?於是,作為一個影迷兼劇迷,眼前又有大把大把的假期,我當然是很迅速地打開了這部電視劇。
  • 《隱秘的角落》爬山梗火了,「爬山」的英語可不是climb the mountain
    隱秘的角落一起爬山嗎什麼意思近日大熱的一部懸疑劇,讓不少網友感受到一絲獨特的「夏日清涼」《隱秘的角落》(The Bad Kids)改編自紫金陳的推理懸疑小說《壞小孩》,講述了沿海小城的三個孩子在景區遊玩時,無意拍攝記錄了一次謀殺,他們的冒險也由此展開。
  • 《隱秘的角落》熱播,帶你去爬山是什麼梗?想和秦昊一起爬山嗎?
    最近大家的朋友圈、抖音、微博等社交媒體都被『一起爬上嗎』『帶你去爬山』刷屏,很多人在說,爬上到底是什麼梗?一起爬山是怎麼來的,下面帶大家看看帶你去爬山的出處,感興趣的小夥伴一起來看下吧!帶你去爬山的這句話是出自最近大火的電視劇《隱秘的角落》裡面的一段劇情。
  • 看《隱秘的角落》,學B站流行知識
    最近最火的局就是它了「一起去爬山嗎?」「我還有機會嗎?」最近大火的國產懸疑劇《隱秘的角落》讓爬山、拍照、寫日記成為新型高危行為,讓《小白船》成為新型恐怖童謠,也激發了觀眾們二次創作的熱情,而這些創作不僅是對劇情本身的分析,還有很多知識可以學!
  • 一起爬山嗎?去尋找「隱秘的角落」那種
    前段時間在朋友圈看到一個朋友發了一句「一起爬山嗎」當時正愁無聊就和朋友聊了起來「爬山?去哪?啥時候?」還有一句「看來你沒刷劇」然後就推薦我去看「隱秘的角落」看了這部劇後終於明白了這句「一起爬山嗎」《隱秘的角落》改編自紫金陳的推理小說《壞小孩》由韓三平監製、辛爽執導,秦昊、王景春領銜主演榮梓杉、史彭元、王聖迪特別主演張頌文、劉琳、蘆芳生、李夢、黃米主演的國內首部家庭懸疑劇集
  • 「一起爬山嗎」刷屏,《隱秘的角落》爆火!用英文該怎麼說?
    最近火爆全網的現實題材懸疑劇《隱秘的角落》,不知道大家看了嗎?而隨之爆火的還有一句臺詞:一起爬山嗎?被網友們瘋狂刷屏!這句是秦昊飾演的斯文變態殺手(psycho killer)的臺詞。秦昊的「一起爬山嗎」手機殼,也隨著網劇的熱播而衝上了熱搜榜。這部劇講述了在南方一個沿海小城,三個孩子在景區遊玩時,無意間拍攝到了一次謀殺過程,由此引發了幾個家庭的命運漩渦。堪比美劇的高製作、演員的精湛演技,以及緊湊燒腦的劇情,使其飽受好評。
  • 《隱秘的角落》爆火!「一起爬山嗎」用英語怎麼說?
    最近現實題材懸疑劇《隱秘的角落》火爆全網! 不知道大家看了嗎? 而隨之爆火的還有一句臺詞:一起爬山嗎? 被網友們瘋狂刷屏!
  • 一起爬山嗎?《隱秘的角落》英文名字為什麼叫「Cat's Cradle」?
    最近一部國產懸疑推理網劇《隱秘的角落》,火得一塌糊塗,獲得了8.9分的豆瓣高評分。
  • 章子怡寫小作文誇《隱秘的角落》 秦昊表示懷念一起爬山的時光
    章子怡寫小作文誇《隱秘的角落》 秦昊表示懷念一起爬山的時光時間:2020-06-25 19:11   來源:新浪   責任編輯:沫朵 川北在線核心提示:原標題:章子怡寫小作文誇《隱秘的角落》 秦昊表示懷念一起爬山的時光 新浪娛樂訊 6月25日,章子怡[微博]髮長文為近日熱播的網劇《隱秘的角落》打call。
  • 一起爬山嗎?秦昊隱秘的角落同款六峰山最全攻略
    最近國產懸疑網劇《隱秘的角落》可謂火的一塌糊塗。該劇一經推出,便引爆各大社交平臺,口碑炸裂,堪稱現象級國產劇,不出意外的話,基本提前鎖定2020年國產劇TOP1。劇外,「爬山梗」已經成為當下最火的網絡流行詞。網友戲謔,各大景區應該阻止秦昊的進入!秦昊邀你去爬山,你怕了嗎?
  • python爬取44130條用戶觀影數據,分析挖掘用戶與電影之間的隱藏信息!
    明天就是大年初一,很多電影也上映,看電影前很多人都喜歡去『豆瓣』看影評,所以我爬取44130條『豆瓣』的用戶觀影數據,分析用戶之間的關係,電影之間的聯繫,以及用戶和電影之間在『豆瓣』平臺爬取用戶觀影數據。爬取用戶列表網頁分析
  • 17萬條彈幕告訴你《沉默的真相》憑什麼高口碑
    距離上一部國產良心劇《隱秘的角落》刷屏還不到2個月,「禿頭梗」、「爬山梗」還讓人記憶猶新。緊接著又一部爆款國產劇來了,那就是最近口碑炸裂的《沉默的真相》。超越前浪《隱秘的角落》上一部被稱為年度爆款國劇的還是《隱秘的角落》,改編自紫金陳的推理小說--《壞小孩》,《隱秘的角落》一經播出就帶著"小白船","爬山梗","禿頭梗"熱鬧了一整個夏天。
  • 《隱秘的角落》走出國門!日系新海報大讚,秦昊:一起去爬山
    《隱秘的角落》將要在日本上映!這個消息還是挺震撼的。日系風的新海報獲得網友稱讚,播出方式更是有驚喜,這樣的好劇確實值得被傳播。秦昊已經給日本朋友發出了邀請:一起去爬山啊!而在日本播出並沒有採用現在的名字,而是取了個新名字,但同樣獲得了大家的肯定。《Bad Kids 隱秘之罪》這個名字看起來確實很有日本劇的感覺,前面的英文翻譯過來就是《壞小孩》的意思,而後面的「隱秘之罪」則是和國產懸疑劇《隱秘的角落》相呼應,這樣的劇名非常不錯,給個贊。