Python爬取《明日之子》(騰訊視頻)評論和彈幕,看看大家都在吐槽什麼

微信公衆號原文鏈接

今年夏天各電視和視頻平臺同步播出了許多音樂綜藝節目,包括熱度較高的《樂隊的夏天》、《明日之子》、《聲入人心》、《我是唱作人》、《中國新說唱》、《中國好聲音》等。

以下是這幾檔節目來自豆瓣的評分,樂隊的夏天以唯一8分以上的高分位居第一,我是唱作人 7.6,明日之子6.5,聲入人心6.1,中國好聲音5.3,中國新說唱5.2分。

小笨聰偶然聽到幾個女孩在談論《明日之子》這檔節目,比較好奇,就想着爬取一下《明日之子》的評論和彈幕,看看大家都在說什麼東東。

 

一.評論及彈幕數據獲取

騰訊視頻爲《明日之子》的播放平臺,我們知道爬取視頻類評論及彈幕數據一般有固定的格式,最重要的是獲取視頻 videoID 以及存放評論或彈幕的文檔,以便找到它們對應的編號。

在谷歌瀏覽器下打開視頻播放地址,向下滑動幾頁加載評論,使用開發者工具(F12)在源代碼中即可看到 commentid,這裏需要使用抓包工具。原理爲找到並複製 url 地址,並一直循環到下一個存放評論的 id,這樣就可以獲取評論。

Headers 是查看自己瀏覽器中的 cookies,彈幕在騰訊視頻中存放在多個叫 danmu 的 js 中,還需要使用到時間間隔,大概同上評論獲取的方法。

1  # -*- coding: utf-8 -*-
2  import urllib.request
3  import re
4  import urllib.error
5  import sys
6  non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
7  headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36     
         (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36")
8  openr = urllib.request.build_opener()
9  openr.addheaders = [headers]
10 urllib.request.install_opener(openr)
11 commentid= '6555778066593331820'
12 url = "https://video.coral.qq.com/varticle/4005898499/comment/v2? 
        callback=_varticle4005898499commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+
        commentid+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag
        =1&source=132&_=&_=1564890413257"
13 for i in range(0, 100):
14    data = urllib.request.urlopen(url).read().decode()
15    patnext = '"last":"(.*?)"'
16    nextid = re.compile(patnext).findall(data)[0]
17    # print(nextid)
18    patcom = '"content":"(.*?)",'
19    comdata = re.compile(patcom).findall(data)
20    for j in range(0, len(comdata)):
21        print("---第"+str(j)+"條評論內容是:")
22        print(eval('u"'+comdata[j]+'"').translate(non_bmp_map))
23    url = "http://video.coral.qq.com/filmreviewr/c/upcomment/0dfpyvfa7tp0ewe?commentid=" 
          + nextid + "&reqnum=3&callback=jQuery1124028619190818429263_1528385498744&_
          =1528385498747"
24    # print(url)

本文獲取了《明日之子》第1-10期以及先導片的評論及彈幕共10w 多條,下面將對這些文字展開各方面分析(數據分析代碼見文末)。

二.數據分析及可視化

1.關注度最高的是誰?

大多數人在發表看法時都會帶自己喜歡支持的明星或選手名字,這也給出了一個很好的分析點,在分析出的詞頻TOP排序中篩選出排列前16的人名,其中包括了導師及選手。當然大家在討論明星或選手涉及到一些別名,以下都是將這些名字歸整後的數據,如華晨宇有花花、大哥,張鈺琪有船長、大俠等別名。

其他還有一些出現錯別字的情況也進行了合併。出現頻率越高的人名其擁有的別稱也越多,還有幾個人都被稱作大哥,如花大哥、山支大哥、蘇大哥等。

上圖可見華晨宇以8707詞頻的絕對優勢佔領討論熱度第一,當然這也與近幾年他參加不少節目漲了很多粉絲有關。

而選手中討論度第一的毫無疑問是5981詞頻的張鈺琪(總決賽最強廠牌),討論熱度選手前4分別爲張鈺琪、By2、洪一諾、馮希瑤。

 

2.粉絲們愛說些什麼評論?

在10w 條數據中使用python進行詞頻統計並輸出前200詞語,剔除人名後截取前面部分數據,發現每個人口中最頻繁出現的詞語都是一些非常正面積極的詞語。 如喜歡、加油、可愛、好聽、支持、實力等。但仍然很少出現與音樂相關的詞語,大部分爲與選手本身相關的。以下圖右上角爲詞頻,粉色區域面積也代表了出現的總頻次。

(以上背景圖來自明日之子官方造型,與詞頻分析無關)

將出現詞頻 TOP200 的詞語製作成詞雲圖如下,人名出現概率較高,其他形容的詞語都較爲積極正向。詞雲輪廓使用了明日之子水晶時代的圖標。

 

3.當提及名字的時候,粉絲們都在說什麼?

以下篩選出幾位討論度較熱的名字,包括6位導師及6位選手,製作專屬人名的詞雲,看看大家圍繞他們都在討論什麼。

數據發現,提及 By2 時的詞語有舞蹈、優秀、心疼,Veegee 爲特別、適合,馮希瑤有支持、好聽,洪一諾爲風格、打動、復古,蘇北北爲蘇哥、搞笑,張鈺琪爲支持、超級、期待。

華晨宇爲可愛、點評、演唱會,龍丹妮爲老闆、龍姐、點評,毛不易爲矜持、害羞、巨星,孟美岐爲山支、啊啊啊、好看,宋丹丹爲老師、花花、音樂、搞笑,孫燕姿爲唱歌、女神、專業。

但總體各位選手討論的熱詞有些沒有太大變化,都和總體的討論熱詞類似,也沒有特別凸顯選手的特點。

4.觀衆情感分析如何?

對所有數據進行情感分析,使用 python 的中文情感分析包 SnowNLP 輸出情感值,其中分值在0-1之間,越靠近0表示情感越消極,越靠近1說明情感越積極。

並繪製瞭如下頻率分佈直方圖。可見觀衆的情感是壓倒性的偏向積極情感,當然也有部分消極情感的意見。

在大致分析了各個演員與每一集的情感之後發現並無太大變化,都偏向積極情感。

以下將情感分值低於0.1的部分評論和彈幕篩選出來做成了詞雲圖,即看那些消極評論都在說什麼。

可以看到,有些消極評論在吐槽騰訊視頻的問題,有一些則是各家粉絲互懟的部分,還有關於節目對選手的問題被指責。

 

當然,節目好與壞都存在呼聲和罵聲,一檔節目決定面向大衆就意味着,不僅節目還包括裏面的選手都面臨被斥責的風險,尤其是最近火熱的音樂類節目。但還是呼籲大家文明觀看,不要以隨意吐槽作爲樂趣。

 

以上就是本次爬取《明日之子》評論和彈幕並可視化分析的過程。微信公衆號“學編程的金融客”後臺回覆“明日之子”即可獲取源碼。【完】

微信公衆號原文鏈接

往期推薦

1.爬取流浪地球影評

2.北上廣深租房圖鑑

3.大學排行榜可視化

4.爬取抖音視頻

5.母親節祝福代碼

你的點贊和關注就是對我最大的支持!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章