這篇文章主要為大家展示了“如何使用python爬取騰訊視頻哈哈哈哈哈彈幕”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用python爬取騰訊視頻哈哈哈哈哈彈幕”這篇文章吧。
《哈哈哈哈哈》目前已播出10期,本文爬取了第10期上下兩篇彈幕。彈幕數據爬蟲在往期原創文章中已詳細講解,本文不做贅述,以下給出完整代碼:
#-*- coding = uft-8 -*- import requests import json import time import pandas as pd df = pd.DataFrame() for page in range(15, 3973, 30): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} url = 'https://mfm.video.qq.com/danmu?otype=json×tamp={}&target_id=6384458060%26vid%3Dd0035ka5c02&count=80'.format(page) print("正在提取第" + str(page) + "頁") html = requests.get(url,headers = headers) bs = json.loads(html.text,strict = False) #strict參數解決部分內容json格式解析報錯 time.sleep(1) #遍歷獲取目標字段 for i in bs['comments']: name = i['opername'] #昵稱 content = i['content'] #彈幕 upcount = i['upcount'] #點贊數 user_degree =i['uservip_degree'] #會員等級 timepoint = i['timepoint'] #發布時間 comment_id = i['commentid'] #彈幕id cache = pd.DataFrame({'用戶名':[name],'彈幕':[content],'會員等級':[user_degree], '發布時間':[timepoint],'彈幕點贊':[upcount],'彈幕id':[comment_id]}) df = pd.concat([df,cache]) df.to_csv('haha-1.csv',encoding = 'utf-8') print(df.shape)
1.數據讀取并預覽
首先,將兩個彈幕csv文件進行數據合并,采用concat方法。
import pandas as pd import numpy as np df1 = pd.read_csv("/彈幕/騰訊/哈哈哈哈哈/haha-1.csv") df1["期數"] = "10期上" df2 = pd.read_csv("/彈幕/騰訊/哈哈哈哈哈/haha-2.csv") df2["期數"] = "10期下" df = pd.concat([df1,df2]) df.sample(10)
抽樣10條彈幕數據,預覽效果如下:
2.查看數據信息
df.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 47687 entries, 0 to 21820 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Unnamed: 0 47687 non-null int64 1 用戶名 13433 non-null object 2 彈幕 47687 non-null object 3 會員等級 47687 non-null int64 4 發布時間 47687 non-null int64 5 彈幕點贊 47687 non-null int64 6 彈幕id 47687 non-null int64 7 期數 47687 non-null object dtypes: int64(5), object(3) memory usage: 3.3+ MB
發現數據存在以下幾個問題:
(1)字段名稱可調整
(2)Unnamed、彈幕id字段多余
(3)用戶名字段有缺失值,可填充
(4)發布時間字段類型需要調整
3.數據清洗
#重命名字段 df = df.rename(columns={'用戶名':'用戶昵稱','彈幕':'彈幕內容','發布時間':'發送時間','評論點贊':'彈幕點贊','期數':'所屬期數'}) #過濾不需要的字段 df = df[["用戶昵稱","彈幕內容","會員等級","發送時間","彈幕點贊","所屬期數"]] #缺失值填充 df["用戶昵稱"] = df["用戶昵稱"].fillna("無名氏")
清洗后,數據預覽如下:
#繪制詞云圖 text1 = get_cut_words(content_series=df['彈幕內容']) stylecloud.gen_stylecloud(text=' '.join(text1), max_words=200, collocations=False, font_path='simhei.ttf', icon_name='fas fa-video', size=653, #palette='matplotlib.Inferno_9', output_name='./haha.png') Image(filename='./haha.png')
2.彈幕里都提到了誰
鹿晗被觀眾提及7329次,王晨藝3222次,張顏齊1632次。鹿晗的吸粉體質為這個綜藝帶來了較大的流量,而陳赫在最新一期的節目中似乎被一些觀眾遺忘。
df8 = df["人物提及"].value_counts()[1:11] print(df8.index.to_list()) print(df8.to_list()) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN)) .add_xaxis(df8.index.to_list()) .add_yaxis("",df8.to_list()) .set_global_opts(title_opts=opts.TitleOpts(title="人物提及次數",subtitle="數據來源:騰訊視頻 \t制圖:菜J學Python",pos_left = 'left'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改橫坐標字體大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改縱坐標字體大小 ) .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='top')) ) c.render_notebook()
我們分別對六位主要提及演員進行詞云圖繪制,發現他們的人緣是真的好,幾乎看不到負面的評價。陳赫的外號還挺多:赫赫、赫哥,不做詞云我還不知道呢,看來J哥要補充知識點了。
3.誰是彈幕發射機
每天都是小春日和共發射彈幕158條,遙遙領先其他彈幕黨,名副其實的彈幕發射機。想太多de貓緊隨其后,發射了97條彈幕,如果大家還有印象的話,他(她)還是《令人心動的offer》第2季彈幕發射機。
df8 = df["用戶昵稱"].value_counts()[1:11] df8 = df8.sort_values(ascending=True) df8 = df8.tail(10) print(df8.index.to_list()) print(df8.to_list()) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN,width="1100px",height="500px")) .add_xaxis(df8.index.to_list()) .add_yaxis("",df8.to_list()).reversal_axis() #X軸與y軸調換順序 .set_global_opts(title_opts=opts.TitleOpts(title="彈幕發送數量TOP10",subtitle="數據來源:騰訊視頻 \t制圖:菜J學Python",pos_left = 'left'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改橫坐標字體大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改縱坐標字體大小 #yaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":40})#更改縱坐標字體大小 ) .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right')) ) c.render_notebook()
我們來看看彈幕發射機討論了些啥,通過彈幕點贊數降序排列,篩選出點贊數最多的10條彈幕,彈幕內容幾乎全為王勉相關內容,死忠粉無疑了。
df_first = df[df["用戶昵稱"]=="每天都是小春日和"] df_first.sort_values('彈幕點贊',inplace=True,ascending=False) df_first[:10]
以上是“如何使用python爬取騰訊視頻哈哈哈哈哈彈幕”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。