用python分析《大侦探第七季之蔷薇下的罪恶》的90000条弹幕
生活随笔
收集整理的這篇文章主要介紹了
用python分析《大侦探第七季之蔷薇下的罪恶》的90000条弹幕
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
大家應(yīng)該都知道密室逃脫吧,最近有個綜藝節(jié)目叫《大偵探》,是一個解密找線索類得綜藝節(jié)目,那可謂是刻刻激動人心,非常的nice呀。借此,我爬取了《大偵探之薔薇下得罪惡》這篇得90000條彈幕,來分析大家彈幕都說了啥!
一、爬蟲
芒果TV的的彈幕是動態(tài)加載的,所以它的表面網(wǎng)站并不能提取出來彈幕,我們可以右鍵網(wǎng)頁檢查源代碼, 查看network中的XHR選項找到真實的url(https://bullet-ws.hitv.com/bullet/2022/04/22/154401/15873099/{i}.json) ,是json字典格式數(shù)據(jù),從這里可以觀察到網(wǎng)頁變化(頁碼.json),因此我們可以直接利用json()函數(shù)進(jìn)行提取數(shù)據(jù)。 而最大的頁碼是由視頻的時常得來,《大偵探薔薇下的罪惡》的時常為91.21分,向上取整92,最大頁碼為92頁。具體爬取方法如下: import requests import pandas as pdheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"} df = pd.DataFrame()for i in range(0, 92):url = 'https://bullet-ws.hitv.com/bullet/2022/04/22/154401/15873099/{}.json'respose = requests.get(url.format(i), headers=headers)# json格式 直接用json提取數(shù)據(jù)for j in respose.json()['data']['items']:ids = j['ids'] # 用戶idcontent = j['content'] # 彈幕內(nèi)容time = j['time'] # 彈幕發(fā)生時間text = pd.DataFrame({'ids': [ids], '彈幕': [content], '發(fā)生時間': [time]})df = pd.concat([df, text]) df.to_csv('大偵探薔薇下的罪惡彈幕_上.csv', encoding='utf-8-sig', index=False)爬取出來的數(shù)據(jù)長這個樣子
二、分析
1、讀取數(shù)據(jù)
# 讀取數(shù)據(jù)并處理 danmu1 = pd.read_csv('大偵探薔薇下的罪惡彈幕_中.csv',encoding='utf-8-sig',sep=',') danmu2 = pd.read_csv('大偵探薔薇下的罪惡彈幕_下.csv',encoding='utf-8-sig',sep=',') danmu3 = pd.read_csv('大偵探薔薇下的罪惡彈幕_上.csv',encoding='utf-8-sig',sep=',') danmu = pd.concat([danmu1,danmu2,danmu3],axis=0).reset_index().drop(['index','ids'],axis=1) danmu 結(jié)果如下:彈幕 發(fā)生時間 0 是不是通過自己自殺 來讓其他人陪葬 0 1 甄是自殺的吧 郵件是鷗發(fā)的 讓他們懺悔他們的堆+ 0 2 甄是自殺的吧 郵件是鷗發(fā)的 讓他們懺悔他們的堆+ 0 3 愛了愛了 0 4 噗噗誒~柚子的維尼也叫噗噗 0 ... ... ... 82650 白白去拍劇去了嗎?沒空來了? 5449000 82651 第一版《無罪說》yyds 5450565 82652 我的無罪說啊啊啊 5456990 82653 愛死明偵啦 5475235 82654 考研上岸呀 5480295 82655 rows × 2 columns2、分詞并去除停用詞
import jieba # 分詞 庫 from wordcloud import WordCloud # 詞云圖庫 import collections # 對分詞計數(shù)用# 讀取停用詞數(shù)據(jù) 停用詞從網(wǎng)上下載的百度停詞庫 stopwords = pd.read_csv('D:/搜狗高速下載/stopwords-master/baidu_stopwords.txt', encoding='utf8', names=['stopword'], index_col=False)# 停用詞轉(zhuǎn)為列表 stop_list = stopwords['stopword'].tolist()# 彈幕轉(zhuǎn)為字符串 str1 = ''.join(danmu['彈幕']) # 將彈幕分割成詞 text = jieba.cut(str1) result_list= [] for word in text: # 對每個分割后的詞語進(jìn)行遍歷篩選:詞長度>1 且不在停用詞中if word not in stop_list and len(word) > 1:result_list.append(word) result_list # 分割后的詞長這樣: ['自殺','其他人','陪葬','甄是','自殺','郵件','懺悔','甄是','自殺',3、對出現(xiàn)次數(shù)最多的前100個詞語進(jìn)行詞云圖展示
# 篩選后統(tǒng)計 word_counts = collections.Counter(result_list) # 獲取前100最高頻的詞 word_counts_top100 = word_counts.most_common(100) print(word_counts_top100) # 最火的100個詞語 [('哈哈哈', 6663), ('老師', 4373), ('真的', 3121), ('偵探', 2859), ('哈哈哈哈', 2821),('一個', 2322), ('女人', 1831), ('這期', 1735), ('兇手', 1548), ('阿蒲', 1520), ('張若昀', 1456), ('感覺', 1429), ('女生', 1275), ('病嬌', 1160), ('現(xiàn)實', 1115), ('惡人', 978), ('女性', 947), ('一期', 943), ('自殺', 913), ('人設(shè)', 898), ('全員', 877), ('保護(hù)', 759), ('媽寶', 740), ('理解', 740), ('媽媽', 738), ('喜歡', 717), ('角色', 694), ('故事', 688), ('雨衣', 665), ('啊啊啊', 621), ('好像', 614), ('可愛', 591), ('別人', 573), ('封神', 569), ('鳳凰', 567), ('好人', 565), ('好帥', 561), ('有人', 560), ('儀式', 547), ('希望', 539), ('死者', 538), ('薔薇', 533), ('上位', 528), ('世界', 505), ('朋友', 504), ('完美', 487), ('發(fā)現(xiàn)', 473), ('控制', 472), ('好看', 471), ('受害者', 458), ('救命', 435), ('肯定', 434), ('蒲魚', 430), ('兔子', 429), ('變態(tài)', 426), ('劇本', 413), ('身份', 413), ('小蒲', 410), ('終于', 395), ('三個', 388), ('第一次', 385), ('傷害', 382), ('無辜', 378), ('女孩子', 378), ('劇情', 375), ('所有人', 375), ('渾濁', 375), ('嗚嗚', 362), ('打卡', 358), ('想到', 354), ('回來', 353), ('甄是', 352), ('兩個', 348), ('同歌', 344), ('網(wǎng)絡(luò)', 342), ('高能', 341), ('嫌疑人', 339), ('戚薇', 334), ('未知', 332), ('男性', 328), ('確實', 326), ('擔(dān)心', 324), ('真人', 323), ('情商', 323), ('報仇', 318), ('吳昕', 317), ('好好看', 309), ('鏡頭', 308), ('一案', 304), ('可怕', 303), ('大案', 299), ('厲害', 296), ('時間', 294), ('這是', 294), ('事情', 289), ('合同', 289), ('雪花', 286), ('有沒有', 285), ('人類', 285), ('彈幕', 283)] import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] =['Microsoft YaHei'] plt.rcParams['axes.unicode_minus'] = Falsemy_cloud = WordCloud(background_color='black', # 設(shè)置背景顏色 默認(rèn)是blackwidth=600, height=600,max_words=200, # 詞云顯示的最大詞語數(shù)量font_path='simhei.ttf', # 設(shè)置字體 顯示中文max_font_size=99, # 設(shè)置字體最大值min_font_size=16, # 設(shè)置子圖最小值random_state=50 # 設(shè)置隨機(jī)生成狀態(tài),即多少種配色方案 ).generate_from_frequencies(word_counts)# 顯示生成的詞云圖片 plt.figure(figsize=(20,6)) plt.imshow(my_cloud, interpolation='bilinear') # 顯示設(shè)置詞云圖中無坐標(biāo)軸 plt.axis('off') plt.show()4、對出現(xiàn)次數(shù)最多的前30個詞語進(jìn)行條形圖展示
word_counts_top30 = word_counts.most_common(30) df = pd.DataFrame(word_counts_top30,columns=['word','num'])fig = plt.figure(figsize=(20,8))ax = fig.add_subplot(111) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False)plt.bar(range(30),df['num'],color='blue') plt.xticks(range(30),df['word'],rotation=60,size=15) plt.title('出現(xiàn)次數(shù)最多的前30個詞',size=15)plt.savefig("出現(xiàn)次數(shù)最多的前30個詞.jpg") plt.show()- 從詞云圖和條形圖可以看出來,“哈哈哈哈,哈哈哈” 的次數(shù)是排在第一位的,這個情節(jié)可能還是比較搞笑的,逗得大家樂呵呵。其次就是詞語:女性、媽寶、自殺、全員惡人之類的,看起來這劇情刷起來是很爽的。出現(xiàn)的人物名字有張若昀,還是比較火的;還有阿蒲,劇情里的人物,最后自殺了。還是值得推薦的一部推理解密類綜藝。
總結(jié)
以上是生活随笔為你收集整理的用python分析《大侦探第七季之蔷薇下的罪恶》的90000条弹幕的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统提示“该内存不能为read”的原因及
- 下一篇: 微信小游戏实战--cocos creat