Python分析《哈哈哈哈哈》第11期弹幕数据

该博客详细介绍了如何使用Python解析《哈哈哈哈哈》第11期的弹幕数据,包括从腾讯视频API获取数据、合并上下集数据,并通过jieba分词生成词云。此外,还展示了数据可视化图表,尽管未进行情感分析,但为后续分析提供了基础。
摘要由CSDN通过智能技术生成

Python分析《哈哈哈哈哈》第11期弹幕数据

       本文针对《哈哈哈哈哈》第11期弹幕数据进行分析,提取弹幕中对五哈成员的提及次数。话不多说,上代码。

一、解析URL提取弹幕

# -*- coding = utf-8 -*-
# @Time : 2021/1/25 20:49
# @Author : 陈良兴
# @File : 11.py
# @Software : PyCharm

import requests
import json
import time
import pandas as pd

csv = pd.DataFrame()
for page in range(15, 3000, 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'
            }
    #《哈哈哈哈哈》11期上
    # url = 'https://mfm.video.qq.com/danmu?target_id=1227342321%26vid%3Dr0018hmh1pa&timestamp={}'.format(page)
    #《哈哈哈哈哈》11期下
    url = 'https://mfm.video.qq.com/danmu?target_id=6408292474%26vid%3Dx0035tnxiev&timestamp={}'.format(page)
    print("正在提取第" + str(page) + "页")
    html = requests.get(url,headers = headers)
    bs = json.loads(html.text,strict = False)   #strict参数解决部分内容json格式解析报错
    time.sleep(5)                               #每读取一个URL延迟3秒,避免被识别而报错
    #遍历获取目标字段
    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]
             })
        csv = pd.concat([csv,cache])
csv.to_csv(r'.\templates\haha-11下.csv',encoding = 'utf-8')

二、数据合并

       由于《哈哈哈哈哈》每一期都分为上下集,因此,需分别提取上下集弹幕数据,再进行整合,最后进行数据清洗。

# -*- coding = utf-8 -*-
# @Time : 2021/1/26 20:22
# @Author : 陈良兴
# @File : 数据合并.py
# @Software : PyCharm

import pandas as pd

csv1 = pd.read_csv("templates/haha-11上.csv")
csv1["期数"] = "10期上"
csv2 = pd.read_csv("templates/haha-11下.csv")
csv2["期数"] = "10期下"
csv = pd.concat([csv1,csv2])                        #将两个csv文件合并
csv.to_csv('haha第11期.csv',encoding = 'utf-8')      #存储合并后的csv文件
csv.info()                                          #查看数据信息

       通过查看数据信息发现,出了用户名信息,其他数据量还是一致的。而本次只做弹幕内容分析,所以可以忽略数据清洗。
在这里插入图片描述

三、制作词云

       制作词云所涉及的模块有jieba、matplotlib、wordcloud、PIL等。作用在代码中已注释,此处不再说明。

# -*- coding = utf-8 -*-
# @Time : 2021/1/25 12:12
# @Author : 陈良兴
# @File : 制作词云.py
# @Software : PyCharm

import jieba                                #分词
from matplotlib import pyplot as plt        #绘图,数据可视化
from wordcloud import WordCloud             #词云
from PIL import Image                       #图片处理
import numpy as np                          #矩阵运算
import csv

#准备词云所需的文字(次)
with open('templates/haha第11期.csv', 'r', encoding='UTF-8') as f:             #读取csv
    reader = csv.reader(f)
    result = list(reader)

text = ""
for item in range(len(result)):
    text = text + str(result[item][2])
    item +=1
# print(text)

#jieba分词
cut = jieba.cut(text)
string = ' '.join(cut)
print(len(string))

img = Image.open(r'.\statics\123.png')                      #打开遮罩图片
img_array = np.array(img)                                   #将图片转化为数组
wc = WordCloud(
    background_color='white',
    mask=img_array,
    font_path="STXINGKA.TTF"                                 
	)
wc.generate_from_text(string)

#绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis('off')                 #是否显示坐标轴

# plt.show()                  #显示生成的词云图片

#输出词云图片到文件
plt.savefig(r'.\statics\wordcloud.jpg')            #设置分辨率dpi=500,不设置则采用默认dpi

生成词云的效果:

图1
图2
图3
图4
图5
图6

四、制作数据可视化图表

       通过数据可视化,能够直观的对比五哈成员在弹幕中的提及次数,但并不能说明提及次数高的就是受欢迎的,还需对弹幕内容进行情感分析,学识有限,仅止于此。
       本次使用的是Apache ECharts,一个基于JavaScript 的开源可视化图表库,可以根据自己的需要去选图。(Apache ECharts链接http://echarts.apache.org/zh/index.html)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值