python分析為啥沒有本山大叔,不算春晚!
本山大叔鬼畜視訊為啥這麼火?我用 Python 分析出以下原因...
2018年年末,“改革春風吹滿地”火了。這是一個來自嗶哩嗶哩的一個鬼畜類音樂視訊。
由up主小可兒上傳,目前播放量已達到1400多萬,有著相當高的熱度。該視訊剪輯了趙本山的歷年作品的經典臺詞,配以略帶喜感的音樂(bgm由其他up主製作),每一句臺詞銜接的相當完美。在網易雲音樂裡也可以搜到同名音樂,另有別名「唸詩之王」,網易雲音樂的一位名為 A96ccA 的這樣聽眾評論道:
第一遍:這是啥玩意?
第二遍:嗯,還可以
第三遍:改革春風吹滿地…
可以看出同樣的是一首洗腦的音樂。
下面讓我先來欣賞(再度洗腦)一下。

下面就讓我們爬取b站上該視訊的評論內容,並進行分析為什麼這個視訊會如此的火。
資料下載
首先我們開啟視訊:https://www.bilibili.com/video/av19390801.
然後找到評論部分,開啟谷歌瀏覽器的控制檯,檢視network選項的請求資訊。通過觀察我們發現了這樣的連結:
https://api.bilibili.com/x/v2/reply?callback=jQuery17204794190151297566_1546432727230&jsonp=jsonp&pn=1&type=1&oid=19390801&sort=0&_=1546432740370
去掉沒有用的資訊最後我們得到最終的url形式為:
https://api.bilibili.com/x/v2/reply?pn={pn}&type=1&oid=19390801
其中pn為第幾頁,目前看到評論有1129頁,這些資料我們用作簡單的資料分析基本夠用了。
下面就可以編寫我們的程式碼了,這裡我採取的是非同步網路請求模組aiohttp。然後儲存下了每條評論的所以網頁可以得到的資訊,後期獲取每條評論的內容,為後面資料分析使用

下面是主要爬取邏輯

這裡需要用到以下模組,使用pip install即可安裝

需要說明的是之前我就是因為沒有加等待時間,所以被b站這個介面的連結給封了,造成的現象就是視訊可以看但是評論是重新整理不出來的,挺有意思的。關於aiohttp的使用方法。
到這裡資料下載邏輯就完事了,下面是資料儲存邏輯。
資料儲存
因為上面的下載的結果是json格式,所以首先資料庫就是mongodb,這裡為了統一使用了非同步mongo資料模組motor,一個基於事件迴圈的模組。
首先建立資料鏈接

這裡使用模組有:

然後開始使用類似pymongo的方式插入資料,具體程式碼如下

然後通過執行這個事件迴圈,事件迴圈是這裡所有非同步的基礎。

資料解析
上面我們拿到了作出資料,但是資料都是json格式的,而且量很大,我們需要的只有評論內容,所以我們需要進一步對資料進行處理,同樣的這裡我也使用了檔案讀寫非同步模組aiofiles
。
這部分程式碼量也很少,用法和open file差不多,多了些非同步的形式而已。
首先讀取mongo裡的資料

讀取還是用的motor模組為了配合後面的檔案讀入使用。

到目前為止資料獲取部分基本結束了,後面就是對上面的文字檔案進行分析了。
資料分析
為了清晰的表達資料所帶來的資訊,對於評論資訊,我們選用直觀的方式--詞雲圖
安裝包

生成詞雲需要用的圖

字型檔案
mac中預設字型顯示亂碼,這裡指定了別的字型msyhbd.ttf,網上隨便搜了一個,windows可以或其他系統支援字型即可
停用詞設定
經過分析大概設定瞭如下停用詞:

停用詞設定是為了去除一些沒有意義的詞,比如這個,那個之類的。或者當前檔案的標題
程式碼如下

最終結果

由此可以看出這視訊最重要的還是洗腦,導致進來就出不去了,同樣的也是追憶本山大叔多年來帶給大家的無數快樂時光,總之洗腦就完事了。
在這裡給大家推薦一個python系統學習q群:250933691有免費開發工具以及初學資料,(資料分析,爬蟲,AI, 機器學習,神經網路)每天有老師給大家免費授課,歡迎一起交流學習