《致我们暖暖的小时光》是一部都市青春爱情网剧。 该剧根据赵乾乾的同名小说改编,讲述了氧气少女司徒末与物理天才顾未易意外合租后发生的一段暖甜逗趣的恋爱故事。
我们今天就用Python分析了《致我们暖暖的小时光》的视频弹幕以及豆瓣短评,看看大家对于什么。
豆瓣评分《致我们暖暖的小时光》,分数为7.7分, 共有14万余人评分。
我们用Python分析了豆瓣的热评数据,从评分分布可以看到:
分数占比方面,25.9%的人给出5星,42.1%的人给出4星。给出1星好评的仅有1.2%。
通过分析了短评中197条数据,筛出一些无用词汇后,统计出各情感表达词段出现的评率并绘制对应的柱状图。
对于用户短评中的情感分析得到:
接近1.0代表好评,可以看出好评率很高。
情感区间为[-0.5, 0.5],位于0以上的是积极评论,反之消极评论。可见,积极评论较多,用户对剧情的反馈较好。
从评价词云图中可见,话题主要集中在男主(顾未易)、女主,并且对于剧情的评价多为正向积极的评价。此外,“青春”、“演技”、"自然"等也是短评中常出现的。
可视化形状选自:https://fontawesome.dashgame.com/
腾讯视频字幕分析12721条弹幕数据,看看大家的关注点在哪里
我们使用Python获取并分析了《致我们暖暖的小时光》的腾讯弹幕数据,爬取及分析过程如下。
- 弹幕数据获取
- 数据读入和数据预处理
- 数据可视化
1.1 弹幕数据获取
首先导入需要的库
import requests # 导入request库 import time # 导入time库 import json # 导入json库 from wordcloud import WordCloud # 从wordcloud库中导入WordCloud方法 import jieba # 导入jieba库 from PIL import Image # 从PIL库中导入Image方法 import numpy as np # 导入numpy库,并将名称简写为np(写成其他简写也可,例如abc,只要方便使用即可)
接着发送请求获取html代码,并在腾讯视频登录后找到user-agent、referer、cookie,
具体步骤如下:
class ChatSpider:
def __init__(self):
self.session = requests.Session()
# 自定义的请求头数据
self.headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 ',
'referer': 'https://v.qq.com/channel/tv?channel=tv&feature=10&listpage=1&pay=867',
'cookie': '账号登录后的cookie'
}
# 设置 session 的全局 headers
self.session.headers.update(self.headers)
接着进行数据的解析和保存:
def get_data(self):
self.data = [] # 创建空列表,用于保存数据
for i in range(100, 1500, 30): # 使用for循环得到每一个完整的请求地址,i 传入 timestamp 参数
params = {
"otype": "json",
"target_id": "3833477302&vid=z00300gtbcw",
"session_key": "1759797,52440,1638861908",
"timestamp": str(i),
"_": "1638861907114"
}
req = self.session.get('https://mfm.video.qq.com/danmu', params=params)
req_josn = json.loads(req.text) # 识别出字符串中的 json 格式
for i in req_josn['comments']: # 分析 josn格式 的数据,找到弹幕在字典中>comments 中> content
print(i['content']) # 打印出弹幕内容
self.data.append(i['content'])
time.sleep(10) # 延时一段时间,防止爬取过快被封禁
def process_data(self):
pass # 空语句
def save_data(self):
with open('./danmu.txt', 'a+', encoding='utf-8') as file:
for i in self.data:
file.write(i + 'n') # 在保存数据的同时加上了换行符,方便查看弹幕
分析:
1.1.1首先点击某一个弹幕,打开开发者工具,找到Request URL,寻找其中的规律
https://mfm.video.qq.com/danmu?otype=json&callback=jQuery191006807634861214984_1638861907086&target_id=3833477302%26vid%3Dz00300gtbcw&session_key=1759797%2C52440%2C1638861908×tamp=75&_=1638861907114 https://mfm.video.qq.com/danmu?otype=json&callback=jQuery191006807634861214984_1638861907090&target_id=3833477302%26vid%3Dz00300gtbcw&session_key=1759797%2C52440%2C1638861908×tamp=45&_=1638861907108
分析得出target_id、session_key相同(PS:其中%2C代表’,’),因此在请求时携带的参数params 包括target_id、session_key、timestamp、_
1.2 数据预处理
# 通过正则表达式实现
pattern = re.compile(r'([u4e00-u9fa5]+|[a-zA-Z]+)') deal_comments = re.findall(pattern, comments) newComments = '' print(newComments) for item in deal_comments: newComments += item print(newComments) f.write(newComments)
1.3 数据可视化
弹幕词云图
具体数据可见于:
链接:https://pan.baidu.com/s/1mKXzJ8LnlhIgcuc481egwQ
提取码:vd2k



