跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python 采集《雪中悍刀行》弹幕生成词云实例

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

moshang发布于 2025/2/6更新于 2026/9/955 浏览
Python 采集《雪中悍刀行》弹幕生成词云实例

Python 采集《雪中悍刀行》弹幕生成词云实例

前言

随着网络视频平台的普及,弹幕已成为观众表达观点的重要方式。通过分析弹幕内容,可以直观地了解观众对剧集的反馈、情感倾向以及关注焦点。本文以电视剧《雪中悍刀行》为例,演示如何使用 Python 采集其部分视频弹幕数据,经过清洗处理后,利用词云图进行可视化展示,从而分析观众的讨论热点。

知识点介绍

本教程将涉及以下核心技术点:

  1. requests 模块:用于发送 HTTP 请求,获取视频弹幕接口数据。
  2. pandas 库:用于数据的存储、处理及表格化保存。
  3. jieba 分词:中文文本处理的基础库,用于将弹幕文本切分为词语。
  4. pyecharts:基于 ECharts 的可视化库,用于绘制交互式词云图。

环境准备

确保已安装以下 Python 版本及依赖库:

  • Python 3.8+
  • PyCharm 或 VS Code 等开发工具
  • 依赖包安装命令:
    pip install requests
    pip install pandas
    pip install pyecharts
    pip install jieba
    

代码实现详解

1. 导入必要的模块

首先导入所需的库,包括正则表达式、网络请求、数据处理及可视化相关的模块。

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

2. 构建请求头与发送网络请求

视频弹幕接口通常位于移动端域名下,需要模拟浏览器 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&timestamp={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}")

3. 数据保存

使用 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("未采集到有效数据")

4. 词云图可视化

这是核心步骤。读取保存的 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 文件

常见问题与优化建议

  1. 反爬虫机制:如果请求频繁被封禁,建议增加随机延时或使用代理 IP。
  2. 接口变更:视频平台的弹幕接口经常更新,若代码失效,需重新抓包分析新的 API 结构。
  3. 分词效果:默认分词可能无法识别剧名中的专有名词(如'徐凤年'),建议自定义词典。
  4. 性能优化:当数据量较大时,建议使用多线程或异步请求加速采集过程。

总结

通过上述步骤,我们成功实现了从视频平台采集弹幕数据,经过清洗、分词,最终生成了可视化的词云图。这种方法不仅适用于《雪中悍刀行》,也可广泛应用于其他影视作品的舆情分析。掌握这一流程,有助于提升数据分析能力,为内容运营提供数据支持。

在实际应用中,还可以进一步结合情感分析算法,量化观众的正向与负向情绪,从而获得更深入的洞察。

目录

  1. Python 采集《雪中悍刀行》弹幕生成词云实例
  2. 前言
  3. 知识点介绍
  4. 环境准备
  5. 代码实现详解
  6. 1. 导入必要的模块
  7. 2. 构建请求头与发送网络请求
  8. 设置请求头,模拟 Chrome 浏览器
  9. 初始化列表用于储存解析后的数据
  10. 遍历页码范围,根据实际接口调整
  11. 注意:实际项目中需确认接口是否支持该参数范围,此处为示例逻辑
  12. 3. 数据保存
  13. 创建 DataFrame
  14. 4. 词云图可视化
  15. 读取数据
  16. 合并所有文本并进行分词
  17. 过滤停用词(示例:简单的长度过滤,实际应加载停用词表)
  18. 统计词频
  19. 获取前 N 个高频词
  20. 准备数据格式 [(word, count), ...]
  21. 创建词云对象
  22. 渲染输出
  23. wc.render("wordcloud.html") # 保存为 HTML 文件
  24. 常见问题与优化建议
  25. 总结

更多推荐文章

查看全部
  • SmolRTSP:嵌入式系统高效 RTSP 流媒体服务实践
  • ClawX:可视化 AI 智能体工具使用指南
  • 企业如何构建专属垂直领域大模型:架构与实施指南
  • AIGC 时代产品经理角色定位与核心能力模型解析
  • 零基础转行渗透测试的学习路径与职业发展指南
  • ESP32-C6 智能家居节点设计:Wi-Fi 6 与 BLE 5.2 应用方案
  • Khoj 深度评测:免费开源 AI 对话工具对比 ChatGPT
  • vLLM-Omni 部署 Qwen3-Omni 模型实战指南
  • 基于 SWIG 将 CTP API 封装为 Java SDK
  • 批判微调 CFT:以 1/140 成本实现媲美 DeepSeek-R1 的数学推理能力
  • WSL 环境下 Neo4j 连接失败排查与修复指南
  • 拆解 CASIC MOTOR 机器人底盘 14.8V 无刷减速电机
  • OpenClaw 本地部署与飞书集成实战
  • 基于 WeKnora 开源项目的 RAG 与知识图谱架构解析
  • AI 辅助下 Java 电商系统核心架构设计与实现
  • 基于 HarmonyOS 6.0 的智能监护系统设计与实现
  • 《Agent Runtime 工程化》第七章 权限与安全边界:7.3 secret scanning
  • 前端文件上传优化方案:分片与断点续传实现
  • ChatTTS WebUI 界面定制:修改主题、快捷键与配置导出
  • C++ 核心面试题总结:语法、内存与面向对象

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online