溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python爬取騰訊視頻哈哈哈哈哈彈幕

發布時間:2022-01-13 15:17:40 來源:億速云 閱讀:244 作者:小新 欄目:大數據

這篇文章主要為大家展示了“如何使用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("無名氏")

如何使用python爬取騰訊視頻哈哈哈哈哈彈幕

清洗后,數據預覽如下:

如何使用python爬取騰訊視頻哈哈哈哈哈彈幕

#繪制詞云圖
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哥要補充知識點了。

如何使用python爬取騰訊視頻哈哈哈哈哈彈幕

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爬取騰訊視頻哈哈哈哈哈彈幕

以上是“如何使用python爬取騰訊視頻哈哈哈哈哈彈幕”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女