Python 采集《雪中悍刀行》弹幕生成词云实例
使用 Python 采集视频弹幕数据,通过 requests 发送请求获取 JSON 格式弹幕信息,利用 pandas 进行数据存储与清洗,去除特殊字符后保存为 CSV 文件。接着使用 jieba 进行中文分词并统计词频,最后借助 pyecharts 库生成交互式词云图,直观展示观众讨论的高频词汇与分析结果。

使用 Python 采集视频弹幕数据,通过 requests 发送请求获取 JSON 格式弹幕信息,利用 pandas 进行数据存储与清洗,去除特殊字符后保存为 CSV 文件。接着使用 jieba 进行中文分词并统计词频,最后借助 pyecharts 库生成交互式词云图,直观展示观众讨论的高频词汇与分析结果。

随着网络视频平台的普及,弹幕已成为观众表达观点的重要方式。通过分析弹幕内容,可以直观地了解观众对剧集的反馈、情感倾向以及关注焦点。本文以电视剧《雪中悍刀行》为例,演示如何使用 Python 采集其部分视频弹幕数据,经过清洗处理后,利用词云图进行可视化展示,从而分析观众的讨论热点。
本教程将涉及以下核心技术点:
确保已安装以下 Python 版本及依赖库:
pip install requests
pip install pandas
pip install pyecharts
pip install jieba
首先导入所需的库,包括正则表达式、网络请求、数据处理及可视化相关的模块。
import re
import requests
import pandas as pd
from collections import Counter
import jieba
from pyecharts.charts import WordCloud
from pyecharts import options as opts
视频弹幕接口通常位于移动端域名下,需要模拟浏览器 User-Agent 以避免被拦截。通过循环分页参数,批量获取弹幕数据。
# 设置请求头,模拟 Chrome 浏览器
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
# 初始化列表用于储存解析后的数据
data_list = []
# 遍历页码范围,根据实际接口调整
# 注意:实际项目中需确认接口是否支持该参数范围,此处为示例逻辑
for page in range(15, 1500, 30):
# 构造请求 URL,包含目标 ID 和会话密钥
url = f'https://mfm.video.qq.com/danmu?otype=json&target_id=7626435152&vid=p0041oidttf&session_key=0,174,1642248894×tamp={page}'
try:
response = requests.get(url=url, headers=headers, timeout=10)
if response.status_code == 200:
json_data = response.json()
# 简单判断是否有数据返回
if 'comments' in json_data:
comments = json_data['comments']
# 处理每一条评论
for comment in comments:
data_dict = {}
# 提取评论 ID
data_dict['commentid'] = comment.get('commentid', '')
# 提取评论内容
content = comment.get('content', '')
# 清理特殊字符(如控制符)
content = re.sub(r'[\x0e\xa0]', '', content)
data_dict['content'] = content
# 提取用户名
data_dict['opername'] = comment.get('opername', '')
data_list.append(data_dict)
else:
print(f"请求失败,状态码:{response.status_code}")
except Exception as e:
print(f"发生错误:{e}")
使用 Pandas 将采集到的字典列表转换为 DataFrame,并保存为 CSV 文件,方便后续查看和分析。指定编码为 utf-8-sig 以防止 Excel 打开时出现乱码。
# 创建 DataFrame
if data_list:
df = pd.DataFrame(data_list)
# 保存数据
df.to_csv('danmu_data.csv', encoding='utf-8-sig', index=False)
print(f"数据已保存,共 {len(df)} 条记录")
else:
print("未采集到有效数据")
这是核心步骤。读取保存的 CSV 文件,提取内容列,使用 jieba 进行中文分词,统计词频,最后通过 pyecharts 渲染词云。
# 读取数据
df = pd.read_csv('danmu_data.csv')
contents = df['content'].dropna().tolist()
# 合并所有文本并进行分词
all_text = ' '.join(contents)
cut_words = jieba.lcut(all_text)
# 过滤停用词(示例:简单的长度过滤,实际应加载停用词表)
filtered_words = [word for word in cut_words if len(word.strip()) > 1]
# 统计词频
counter = Counter(filtered_words)
# 获取前 N 个高频词
top_words = counter.most_common(100)
# 准备数据格式 [(word, count), ...]
word_count_list = top_words
# 创建词云对象
wc = (
WordCloud()
.add(series_name="弹幕热词", data_pair=word_count_list, word_size_range=[10, 50], shape='circle')
.set_global_opts(
title_opts=opts.TitleOpts(title="《雪中悍刀行》弹幕词云分析"),
tooltip_opts=opts.TooltipOpts(is_show=True)
)
)
# 渲染输出
wc.render_notebook() # 在 Jupyter 中显示
# wc.render("wordcloud.html") # 保存为 HTML 文件
通过上述步骤,我们成功实现了从视频平台采集弹幕数据,经过清洗、分词,最终生成了可视化的词云图。这种方法不仅适用于《雪中悍刀行》,也可广泛应用于其他影视作品的舆情分析。掌握这一流程,有助于提升数据分析能力,为内容运营提供数据支持。
在实际应用中,还可以进一步结合情感分析算法,量化观众的正向与负向情绪,从而获得更深入的洞察。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online