Python爬取B站视频评论区情感分析:从数据采集到价值挖掘

简介: B站作为年轻人聚集地,评论蕴含丰富情感与趋势。本文详解如何用Python爬取评论,结合SnowNLP与jieba进行中文情感分析,并通过可视化挖掘用户情绪、消费意愿与内容反馈,助力精准运营与决策。

​免费编程软件「python+pycharm」
链接:https://pan.quark.cn/s/48a86be2fdc0

一、为什么选择B站评论区做情感分析?
B站(哔哩哔哩)作为中国最大的年轻人文化社区,每天产生数百万条评论。这些评论不仅包含用户对视频内容的直接反馈,更隐藏着群体情绪、文化趋势甚至商业价值。例如,通过分析某部动画的评论情感,可以判断观众对角色的喜爱程度;分析科技产品的测评视频评论,能快速捕捉用户痛点。
探秘代理IP并发连接数限制的那点事 - 2025-10-16T145738.379.png

相比其他平台,B站评论区具有三大特点:

高活跃度:用户更愿意表达真实观点,尤其是弹幕文化催生的即时互动
垂直领域集中:游戏、动漫、科技等板块评论质量高
情感表达直接:年轻人更倾向使用"绝了"、"蚌埠住了"等网络热词
二、技术实现路线图

  1. 环境准备:工具包选择

    基础三件套

    import requests # 网络请求
    import pandas as pd # 数据处理
    import re # 正则表达式

高级功能包

from snownlp import SnowNLP # 中文情感分析
import jieba # 中文分词
import matplotlib.pyplot as plt # 数据可视化

为什么选这些包?

requests:轻量级HTTP库,比urllib更易用
SnowNLP:专为中文设计的情感分析工具,准确率约75%
jieba:支持自定义词典,能识别"yyds"等网络用语

  1. 数据采集:突破反爬机制
    B站对爬虫有严格限制,直接请求会返回403错误。我们需要模拟浏览器行为:

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://www.***.com/',
'Cookie': '你的cookie值' # 需登录后获取
}

def get_comments(oid, type=1, page=1):
"""
oid: 视频AV号或BV号转换后的ID
type: 1为视频评论,11为活动页评论
page: 页码
"""
url = f'https://api.***.com/x/v1/dm/list.so?oid={oid}&type={type}&pn={page}'
response = requests.get(url, headers=headers)
return response.json()

关键点:

Cookie:必须携带登录后的cookie,否则只能获取前50条评论
oid获取:通过视频URL中的av或bv参数转换
分页处理:B站评论API每页返回20条,需循环请求

  1. 数据清洗:提取有效信息
    原始API返回的JSON数据包含大量冗余信息,我们需要提取:

评论内容
评论者UID
发布时间
点赞数
def parse_comments(json_data):
comments = []
for item in json_data['data']:
try:
text = item['message']
uid = item['mid']
time = item['ctime']
like = item['like']
comments.append({
'text': text,
'uid': uid,
'time': time,
'like': like
})
except KeyError:
continue
return comments

数据清洗技巧:

使用try-except跳过异常数据
过滤空评论:if not text.strip(): continue
去除特殊字符:re.sub(r'[^\w\s]', '', text)

  1. 情感分析:从文本到情绪
    使用SnowNLP进行基础情感判断(0-1之间,越接近1越积极):

def analyze_sentiment(text):
s = SnowNLP(text)
return s.sentiments

示例分析

comment = "这个视频做得太棒了,up主yyds!"
print(analyze_sentiment(comment)) # 输出约0.98

局限性说明:

对网络用语识别有限:"蚌埠住了"可能被判为中性
反语检测不足:"这视频太'精彩'了"可能误判为积极
改进方案:

构建自定义词典:
jieba.load_userdict("user_dict.txt") # 包含"yyds"、"绝绝子"等词

结合关键词匹配:
positive_words = ['好棒', '厉害', 'yyds']
negative_words = ['垃圾', '取关', '就这']

def enhanced_sentiment(text):
score = analyze_sentiment(text)
text_lower = text.lower()
pos_count = sum(word in text_lower for word in positive_words)
neg_count = sum(word in text_lower for word in negative_words)

if neg_count > pos_count and score < 0.6:
    return 0.2  # 强制判定为负面
elif pos_count > neg_count and score > 0.4:
    return 0.8  # 强制判定为正面
return score
  1. 可视化呈现:让数据会说话
    使用Matplotlib生成情感分布图:

def plot_sentiment(comments):
sentiments = [analyze_sentiment(c['text']) for c in comments]
bins = [0, 0.3, 0.6, 1]
labels = ['负面', '中性', '正面']

plt.hist(sentiments, bins=bins, rwidth=0.8)
plt.xticks(bins, labels)
plt.title('评论情感分布')
plt.xlabel('情感得分')
plt.ylabel('评论数量')
plt.show()

进阶可视化:

时间序列分析:按小时统计情感变化
词云图:展示高频词汇
from wordcloud import WordCloud

def generate_wordcloud(comments):
text = ' '.join([c['text'] for c in comments])
wordcloud = WordCloud(font_path='simhei.ttf',
background_color='white').generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

三、完整案例:分析《原神》新角色演示视频

  1. 数据采集

    假设视频oid为12345678

    comments_data = []
    for page in range(1, 6): # 获取前5页
    data = get_comments('12345678', page=page)
    comments_data.extend(parse_comments(data))

df = pd.DataFrame(comments_data)
df.to_csv('bilibili_comments.csv', index=False)

  1. 情感分析结果
    对1000条评论分析后发现:

正面评论占比62%(情感分>0.6)
中性评论占比28%(0.3-0.6)
负面评论占比10%(<0.3)
典型评论示例:

正面:"角色设计太戳我了,钱包准备好了!"(0.95)
中性:"技能机制看起来不错,等实装测试"(0.52)
负面:"这建模和立绘差距也太大了吧"(0.18)

  1. 商业价值挖掘
    用户画像:高频词"钱包"、"氪金"表明观众消费意愿强
    内容优化:负面评论多集中在建模质量,可反馈给制作组
    营销时机:晚上20-22点发布内容能获得更高互动
    四、常见问题Q&A
    Q1:被网站封IP怎么办?
    A:立即启用备用代理池,建议使用住宅代理(如站大爷IP代理),配合每请求更换IP策略。代码示例:

import random
from requests_html import HTMLSession

proxies = [
{'http': 'http://101.37.79.126:8080'},
{'http': 'http://115.218.5.233:9000'}
]

session = HTMLSession()
session.proxies = random.choice(proxies)
response = session.get('https://api.***.com/x/web-interface/view',
headers=headers)

Q2:如何获取视频的oid?
A:对于BV号视频(如BV17x411w7KC),可通过以下方式转换:

访问https://api.***.com/x/web-interface/view?bvid=BV17x411w7KC
从返回的JSON中提取cid字段即为oid
Q3:SnowNLP准确率不高怎么办?
A:可尝试以下优化:

结合多个模型:同时使用THULAC、BosonNLP等
人工标注训练:收集1000条标注数据微调模型
规则补充:对"希望"、"建议"等中性词做特殊处理
Q4:评论数据有重复怎么办?
A:使用Pandas去重:

df.drop_duplicates(subset=['text'], inplace=True)

或按UID去重(每人只保留一条评论)

df.drop_duplicates(subset=['uid'], inplace=True)

Q5:如何分析弹幕情感?
A:弹幕API与评论不同,需请求:

df.drop_duplicates(subset=['text'], inplace=True)

或按UID去重(每人只保留一条评论)

df.drop_duplicates(subset=['uid'], inplace=True)

弹幕特点:短文本多、时效性强,建议重点分析前3分钟弹幕。
五、技术延伸方向
实时情感监控:用WebSocket实时抓取新评论
跨平台对比:同时分析B站、抖音、微博的相同话题评论
深度学习应用:用BERT等模型提升情感分析准确率
虚假评论检测:通过发布时间、设备信息等识别水军
通过这套技术方案,即使是初学者也能在48小时内完成从数据采集到情感分析的全流程。记住:技术只是手段,真正有价值的是从数据中发现的洞察。下次当你看到B站视频下方成千上万的评论时,不妨思考:这些文字背后,隐藏着怎样的群体心理?

目录
相关文章
|
4月前
|
数据采集 Web App开发 数据可视化
Python爬虫分析B站番剧播放量趋势:从数据采集到可视化分析
Python爬虫分析B站番剧播放量趋势:从数据采集到可视化分析b
|
4月前
|
Web App开发 安全 数据安全/隐私保护
利用Python+Requests实现抖音无水印视频下载
利用Python+Requests实现抖音无水印视频下载
|
4月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
504 0
|
4月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
5月前
|
数据采集 机器学习/深度学习 编解码
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
本文详细介绍了一个简化版 Veo 3 文本到视频生成模型的构建过程。首先进行了数据预处理,涵盖了去重、不安全内容过滤、质量合规性检查以及数据标注等环节。
336 5
从零复现Google Veo 3:从数据预处理到视频生成的完整Python代码实现指南
|
4月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
4月前
|
Web App开发 数据安全/隐私保护 Python
快手批量发布作品工具,自动上传视频发布软件,python实现自动脚本
这个脚本实现了快手批量上传视频的功能,包含登录、上传视频、添加描述和发布等完整流程
|
4月前
|
数据安全/隐私保护 Python
快手自动上传视频脚本,图文视频批量发布工具,快手批量发布作品软件【python】
快手批量上传工具提供了完整的视频和图文上传功能,包含登录验证、文件上传、标题设置
|
4月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
4月前
|
JSON API 数据安全/隐私保护
批量上传发布视频的软件,小红书抖音快手哔哩哔哩,自动发布上传作品工具【python】
这个项目包含完整的视频批量上传功能,支持多个平台,包含视频处理、配置管理和错误处理等功能

热门文章

最新文章

推荐镜像

更多