大家好,我是阿辰,今天来教大家如何实现『B站直播』弹幕实时分析

思路:采集直播弹幕,然后通过情感分析,不同时间点的评论数,高频词统计

一、采集直播弹幕

首先在B站随意打开一个直播房间

https://live.bilibili.com/22080761?hotRank=0&session_id=acbf4a0396f4c22_E68865D5-1DD6-4677-859D-4A81FC5B86C6&visit_id=64j0r30ef8c0

房间号:22080761

1.查找弹幕链接

通过F12查看network,找到下面这个链接

https://api.live.bilibili.com/xlive/web-room/v1/index/roomEntryAction

可以看到是post请求,经过验证只需要房间号就可以获取弹幕!

2.构造post请求

roomid = "22080761"
url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'
headers = {'Host': 'api.live.bilibili.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
}
data = {'roomid': roomid,
}
html = requests.post(url=url, headers=headers, data=data).json()

直接返回json数据

二、实时采集

为了达到实时采集的目的,需要将采集弹幕的代码封装成函数,然后每个几秒调用一次这个函数(比如这里定为5秒)

1.定时代码

def sleeptime(hour, min, sec):return hour * 3600 + min * 60 + sec
second = sleeptime(0, 0, 5)
while 1 == 1:time.sleep(second)print('do action')###5秒采集一次get_msg()

这里的get_msg是采集弹幕函数

2.写入TxT

    with open(filename,"a+", encoding='gb18030') as f:for content in html['data']['room']:# 获取昵称nickname = content['nickname']# 获取发言text = content['text']# 获取发言时间timeline = content['timeline']# 记录发言msg = timeline + '*' + nickname + '*' + text###不存在则添加if msg not in msg_data:f.write(str(msg)+"\n")

文本以房间号命名

三、情感分析

情绪判断,返回值为正面情绪的概率,越接近1表示正面情绪,越接近0表示负面情绪

先简单来看一个例子

text1 = '这部电影真心棒,全程无尿点'
s1 = SnowNLP(text1)
print(text1, s1.sentiments) # 这部电影真心棒,全程无尿点 0.9842572323704297

通过SnowNLP库实现文本的情感分析

roomid = "22080761"
filename = roomid + ".txt"
##读取当前txt
with open(filename, "r", encoding='gb18030') as f:msg_data = f.readlines()
Sentiment_list = []
###正面
count1 = 0
###负面
count2 = 0
for i in msg_data:text = i.split("*")[2]t = SnowNLP(text)if t.sentiments > 0.5:count1 = count1 +1else:count2 = count2 + 1
Sentiment_list.append(count1)
Sentiment_list.append(count2)
print(Sentiment_list)

从弹幕文本文件中读取出每一条弹幕,然后进行情感分析,最后统计正面评论数和负面评论数

正面弹幕13条、负面弹幕10条。

四、不同时间点评论数分析

同样还是读取弹幕文本文件,之后就以分钟为间隔进行统计

获取当前小时

h =  time.strftime("%Y-%m-%d %H", time.localtime())

开始统计

for i in msg_data:time_list.append(i.split("*")[0].split(":")[1])
data_time = list(set(time_list))
data_time.sort()
###只取三个
if len(data_time)>7:data_time = data_time[-7:]name = [h+":"+i for i in data_time]
value =[time_list.count(i) for i in data_time]
print(name)
print(value)

五、高频词统计

思路:通过SnowNLP库对文本(弹幕)进行分词然后会分好的词进行统计排序

先将弹幕合并成文本

for i in msg_data:#if ymdhm in i:text_list.append(i.split("*")[2])# 需要操作的句子
text = "".join(text_list)
text = text.replace("\n","")
print(text)
s = SnowNLP(text)

开始进行统计,然后取出前5

list_all = s.words
dict_x = {}
for item in list_all:dict_x[item] = list_all.count(item)
sorted_x = sorted(dict_x.items(), key=operator.itemgetter(1), reverse=True)
re_word_list = []
re_word_list_name = []
re_word_list_data = []
count = 0
for k, v in sorted_x:if count==5:breakif len(k)>1:re_word_list_name.append(k)re_word_list_data.append(v)count = count+1
re_word_list.append(re_word_list_name)
re_word_list.append(re_word_list_data)
print(re_word_list)

六、总结

本文主要是讲解了任何实时采集直播弹幕,然后通过SnowNLP库等对弹幕数据进行统计。

如果大家对本文代码源码感兴趣,扫码关注『Python爬虫数据分析挖掘』后台回复:直播弹幕 ,获取完整代码!

最后说一声:原创不易,求给个赞、在看、评论

------------- 推荐阅读 -------------

高质量推荐

可视化分析中国500强排行榜数据


.实战讲解四种不同爬虫解析数据方法,必须掌握!


一键查询明星个人信息,并以知识图谱可视化展示


爬取展示『王者荣耀』2020年-2021年2月收入流水线

‍‍‍‍

专注:python、爬虫、数据分享、数据可视化

手把手教你实现『B站直播』弹幕实时分析相关推荐

  1. python自动进直播_(1/5)手把手教你如何录制b站直播,并且借助python实现部分自动化...

    在经历了半个多月的录播折腾后,我逐渐摸索出一套比较简洁的录制方法(只是想偷懒而已) 从录播到投稿,我所使用解决方案有以下两种: 1.        录播姬录制FLV文件+python自动压制FLV文件 ...

  2. python怎么实现直播_(2/5)手把手教你如何录制b站直播,并且借助python实现部分自动化...

    声明:本文仅供有一定动手意愿的同学进行参考,同时希望大家珍惜自己喜欢的UP主. 在介绍完背景知识后,本节将介绍录播工具--录播姬的安装.设置和投稿的一些问题. 解决方案有以下两种: 1.录播姬录制FL ...

  3. Shopify成功案例,手把手教你玩转独立站

    Shopify成功案例,手把手教你玩转独立站 COVID-19的大流行对全球经济产生了较大的冲击,电子商务行业也不能幸免.我们的Shopify商店如何在这场全球灾难中生存?也许你可以在这些成功的Sho ...

  4. python实现弹幕_python实现b站直播自动发送弹幕功能

    基本开发环境 · Python 3.6 · Pycharm 相关模块使用 import requests import time from tkinter import * import random ...

  5. 自定义事件详解以及实现有趣B站直播间弹幕轰炸功能

    案例:B站直播间弹幕轰炸跳过按键监听办法: var event = document.createEvent('Event'); event.initEvent('input', true, true ...

  6. 【爬虫】基于requests的B站直播实时弹幕爬取

    ​​​​​​ 网页分析 进入Network在众多响应中寻找和弹幕相关的API, 图3-1 B站直播房间页面的开发者工具界面preview 图3-2 在3-2展示的页面中可以查看到URL中有参数room ...

  7. 几行JS代码实现b站直播间弹幕抽奖

    有浏览器就行,无需爬虫,无需安装其他任何软件或者插件. 在任意b站直播间,打开浏览器开发者工具(推荐使用chrome,对应开发者工具为DevTools),切换到控制台(console)面板即可. 作为 ...

  8. 2021-04-21爬虫爬取b站直播间弹幕并制作词云

    直播间弹幕接口 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=' + roomid 示例: json格式化 ...

  9. 如何解析lvx文档_建站零基础入门:手把手教你如何自助建站

    使用阿里云云服务器ECS搭建网站有多种方式,本文主要介绍自助建站的流程. 建站方式 使用ECS建站的方式如下表所示.请根据实际业务需求,选择适合您的建站方式. 自助建站步骤 1.选择服务器. 不同网站 ...

最新文章

  1. 你离开学只差这个视频:李宏毅机器学习2020版正式开放上线
  2. HTML5-WebSocket实现对服务器CPU实时监控
  3. android Fragments详解
  4. 编程判断某个数为素数_【每日编程233期】素数对猜想
  5. Codeup墓地-问题 B: 算法7-16:弗洛伊德最短路径算法
  6. 用Mysql网页式管理工具安全地访问数据库的方法
  7. tomcat 启动项目 页面文字乱码_项目通过tomcat部署到服务器,请求数据页面中文乱码问题...
  8. echarts自适应父div大小
  9. 【实践】因果推断在快手推荐场景的应用探索.pdf(附下载链接)
  10. 20200910:力扣204周周赛题解上(Java/Python/Cpp)
  11. VB禁用CTRL +ALT + DEL(1)
  12. 《天风文章》 V1.1.0设计文档
  13. 31.卷1(套接字联网API)---流
  14. Java面向对象总复习-QuickHit
  15. matlab latex表示,科学网—MATLAB程序如何在latex上发表? - 卢远志的博文
  16. 如何求解单边z变换_用单边Z变换解差分方程.ppt
  17. 电流探头的主要指标及应用场合
  18. 平均值 几何平均数 算术平均数 调和平均数 平方平均数
  19. python压缩解压缩_Python实现压缩和解压缩ZIP文件的方法分析
  20. 自动售货机软件工程课设_软件工程饮料自动售货机系统-.doc

热门文章

  1. NO.72——用Flask框架搭建一个音乐搜索引擎
  2. CAD学习笔记基础课【特性】
  3. uni-app - 小程序分享功能
  4. 关于人生困惑的62个问题的回答
  5. GUI自动化 - 删除企业微信某人聊天记录
  6. 浏览器储存之Cookie、sessionStorage、localStorage和indexedDB区别与详解
  7. 绝地求生大逃杀裸连教程
  8. wps(word)复制过来的文字一行字数不足却自动换行解决办法
  9. IDEA 乱码问题完美解决
  10. WebSocket前后端交互