6.12周杰伦发布新歌《Mojito》,赶紧蹭个热点来看一下大家弹幕都会说点什么。
爬取链接【官方MV】Mojito - 周杰伦
本项目源码,提取码duq8

目前弹幕只能抓取1000条,再多些的抓取方法我就不会了,每一次调用API返回的弹幕文本可能会是不一样的,所以各位运行文件后出现的结果会有所不同。

找弹幕API

自己抓包研究是不可能的,前人肯定都帮我们踩过坑了,所以我这种技术渣渣肯定要在搜索引擎上搜寻资料的,B站弹幕接口,这篇文章很详细地介绍了B站弹幕API的各个参数。
B站弹幕API格式:https://api.bilibili.com/x/v1/dm/list.so?oid= + cid

找cid

  1. 打开爬取链接
  2. F12打开开发者模式
  3. 选择Elements,Ctrl+F查询"cid="
  4. 红色方框内即是我们要找的cid

验证API是否可用

根据上面两步我们得出的弹幕抓取链接是https://api.bilibili.com/x/v1/dm/list.so?oid=201056987,我们来测试一下。

可用,注意是XML格式的,所以我们要解析一下,这次我用的是re。

爬取弹幕

"""
爬取弹幕的原视频链接:https://www.bilibili.com/video/BV1PK4y1b7dt?from=search&seid=8989995112711953123
B站弹幕API格式:https://api.bilibili.com/x/v1/dm/list.so?oid= + cid
"""
import requests
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import warnings
import re
import pandas as pd
import seaborn as sns
import pyecharts.charts as pyc
import pyecharts.options as opts
# 解决matplotlib中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
# 忽略警告
warnings.filterwarnings("ignore")# 爬取弹幕
url = "https://api.bilibili.com/x/v1/dm/list.so?oid=201056987"
res = requests.get(url=url)
# 设置编码UTF-8
res.encoding='UTF-8'
# 根据正则提取弹幕属性和弹幕文本
danmu= re.findall("<d p=\"(.*?)\">(.*?)</d>",res.text)
data = pd.DataFrame(danmu,columns=['p','弹幕'])


执行到这一步时,我们将弹幕信息和文本结合到一个DataFrame里,第一列p是每条弹幕的属性,第二列则是每条弹幕的文本,首先我们处理一下弹幕

文本处理及词云图

from string import punctuation
# 导入自定义字典
jieba.load_userdict("./mydict.txt")# 设置停用字与符号
stop = ',。、【 】 “”:;()《》‘’{}?!()、%^>℃:.”“^-——=&#@¥!___…↑我的了1是'+punctuation# 将Series转为list
danmu_list = data['弹幕'].to_list()word_list = []
for sentence in danmu_list:# 遍历danmu_list,对每一句弹幕进行清洗new_sentece = []for w in sentence:# 遍历每一句弹幕,如果出现停用的字符就跳过,保留汉字和字母if w in stop:passelse:new_sentece.append(w.strip())# 把list转为strnew_sentece = ''.join(new_sentece)for i in jieba.cut(new_sentece):word_list.append(i.strip())
# 统计词频
import collections
words = sorted(collections.Counter(word_list).items(),key=lambda x:x[1],reverse=True)

  1. 从词云图来看,周杰伦这首《Mojito》的MV真的是相当粉嫩,出现次数较高的几个字或词都带有“粉”字。
  2. “爷青回”即“爷的青春回来了”,周杰伦的歌曲影响了一代人,即使年龄在慢慢增长,但他们始终珍藏着记忆中青春的模样。
  3. 词云图中不乏“啊啊啊”、“哈哈哈”、“哦哦哦”之类的语气词。可见听众们对于期待已久的周杰伦的新歌难掩内心的惊喜之情,只能借用这种感叹词来表达。(或者说词语的匮乏,例如一个卧槽包含千万感情)

EDA

属性数据清洗

attr = data['p'].str.split(",",expand=True)
# 设置列名
attr.columns= ['appear','mode','size','color','timestamp','pool','uid','rowid']# 将弹幕出现时间设置为float
attr['appear']=attr['appear'].astype("float")

弹幕出现时间分布

  1. 整个弹幕的出现分布呈现右偏,符合音视频的用户流失情况。
  2. 弹幕的发送密度在前100秒较高,期间有两个峰值,分别是10-20秒以及90-95秒,前一个区间是前奏部分,而后一个区间是rap部分。从周杰伦唱出第一句歌词的18-19秒,及唱完rap部分的100秒之后弹幕密度骤降。随后的loop副歌部分弹幕数呈现明显的下降趋势。

弹幕模式

  1. B站弹幕的模式:1-3 滚动弹幕,4 底端弹幕,5顶端弹幕,6 逆向弹幕,7 精准定位,8 高级弹幕。
  2. 可以发现用户最常发送弹幕的形式是滚动弹幕,因为B站默认发送弹幕的模式就是滚动弹幕,可以增加提示以提高弹幕的多样性。
  3. 顶端弹幕多于底部弹幕,毕竟减少眼球活动路径可以最大化的提高自己发送弹幕被人家发现的概率。还有就是底部弹幕会挡住歌词字幕。

字号分布

  1. 问就是默认。。B站就只有“小”和“标准”字号两个选项,默认是“标准”

弹幕颜色


这都是10进制的,我们用hex转换,通过在线的配色网站查得配色最多的前三名分别如下图所示:

  1. 14811775对应的是#E2027F,16777215对应的是#FFFFFF,13369971对应的是#CC0273
  2. 第一名#E2027F(14811775)浅粉色,第二名#FFFFFF(16777215)白色,第三名#CC0273(13369971)深粉色。白色的排名如此之高我可以理解,但是浅粉色的排名是第一名的确没有想到,因为B站默认的色表中接近粉色的只有#CC0273,看来发弹幕的朋友们为了切合视频的配色还特意去找了浅粉色的十六进制数,真不容易。

用户发送弹幕次数

  1. 大多数听众只发送一次弹幕,但也有狂热爱好者连发7条弹幕。

总结

支持原创!杰伦牛逼!

参考文献

爬取周杰伦新歌《Mojito》MV弹幕,看看粉丝们都说的些啥!

爬虫6_周杰伦新歌《Mojito》B站弹幕分析相关推荐

  1. 周杰伦新歌发布,爬取《Mojito》MV弹幕,看看粉丝们都说的些啥!

    6月12日凌晨0点,Jay Chou最新单曲<Mojito>正式上线,仅上线1小时销售量就超过百万张,预计今天这首单曲的销量仍然会继续攀升.这次新歌的歌名叫做<Mojito>, ...

  2. 超话显示服务器有点累,周杰伦新歌1小时900万,服务器崩溃!但这12个彩蛋你绝对没注意...

    不用我说,大家的朋友圈昨天应该被周杰伦的新歌刷爆了吧,我都不用开朋友圈就知道,百分之八十的人都在分享杰伦的新歌<说好不哭>.我没想到的是,QQ这位旁友,居然在这么关键的时刻,被网友们挤爆了 ...

  3. 周杰伦新歌《彩虹》mp3 在线试听|下载|歌词 在线播放,周杰伦新歌《彩虹》MV

    <script src='Http://code.xrss.cn/AdJs/csdntitle.Js'></script> <彩虹> 作曲:周杰伦 作词:周杰伦 哪 ...

  4. 周杰伦新歌《无双》歌词/下载/MP3/MV/试听/在线播放

    <script src='Http://code.xrss.cn/AdJs/csdntitle.Js'></script> 周杰伦新歌<无双>歌词/下载/MP3/M ...

  5. 手机qq音乐服务器无响应,周杰伦新歌致平台宕机,QQ音乐为什么崩溃?

    原标题:周杰伦新歌致平台宕机,QQ音乐为什么崩溃? 9月17日消息,昨日 23 点,各大社交媒体平台都被周杰伦新单曲<说好不哭>刷屏,而作为独家上线该专辑的音乐平台 QQ 音乐,在专辑上线 ...

  6. 关于《后浪》的B站弹幕分析总结(四)——Python实现LDA内容主题挖掘及主题可视化

    目录 一.使用sklearn里面的LatentDirichletAllocation做主题挖掘 二.使用gensim的ldamodel做主题挖掘 三.如何将结果可视化 四.如何确定主题数 4.1 观察 ...

  7. 关于《后浪》的B站弹幕分析总结(二)——jieba分词、常用词典、颜文字处理以及字符格式统一

    目录 一.你需要知道的几个常用词典 - **停用词典(停用词,颜文字,emoji)** - 否定词典,程度副词词典 - 情感极性词典,多维情感词典 二.统一字符.统一大小写.统一繁简体 - 统一字符 ...

  8. 关于《后浪》的B站弹幕分析总结(三)——怎么制作好看的交互式词云

    目录 一.对分词做词频统计 二.使用wordcloud展示词云 二.使用pyecharts绘制词云 三.使用词云制作工具 与本文相关内容链接: B站视频<[数说弹幕]我不小心看了后浪弹幕> ...

  9. 昨晚,周杰伦新歌《说好不哭》一夜赚了1000万!

    昨晚发生了一件大事 就是周杰伦终于发新歌了! 第一件事当然是去微博看了MV, 然后再去QQ音乐听一下纯享版. 结果看到这个弹窗, 吓哭了! 什么叫人气王! 卖出333.33万张. 当我盯着十几秒看了之 ...

最新文章

  1. angular5 httpclient的示例实战
  2. DataGrip以超级管理员身份登录Oracle
  3. IDEA中导入VUE后,JS文件爆红解决办法
  4. HashMap在并发场景下踩过的坑
  5. 一种简单的加解密算法
  6. python解析多层json数据_python解析多层json操作示例
  7. 【验证码识别】基于matlab GUI遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含Matlab源码 1694期】
  8. 直流电机控制原理与TB6612FNG(初识编码器)
  9. AHCI和IDE区别,和在目前系统中设置 AHCI - 摘自网络
  10. linux命令行打开写字板,在Linux操作系统中使用手写板
  11. 动作电位的产生和动作电位的长距离高速传导
  12. 2021年全球及中国酒店行业发展现状及竞争格局分析,全球酒店行业景气度大幅回暖「图」
  13. 批量用title的内容命名html文件,使用批处理批量复制文件并重命名
  14. 为什么要用vue,他解决了什么问题,如何使用它?
  15. 破解Android app的过程记录
  16. 怎样去掉“交互式服务对话框检测”提示对话框
  17. 深度分析如何在Hadoop中控制Map的数量
  18. Visio中如何自定义图形旋转角度
  19. Java中克隆的用法,深拷贝、浅拷贝概念的引出
  20. python print函数中“end“的作用及使用方式

热门文章

  1. Jmeter性能测试报告导出
  2. 计算机c语言的作用,计算机c语言的特性有哪些
  3. 蓝桥杯的比赛流程和必考点
  4. 《胜负无定数,敢拼搏成七分》的读后感
  5. halcon在图片上画几何形状并保存
  6. 建站html代码,HTML代码大全
  7. [区块链]区块链技术在殡葬行业的思考
  8. LaTex\TexStduio设置参考文献Bibtex
  9. Gradle-SpringCloud聚合项目配置
  10. webpack打包时提示:The following entrypoint(s) combined asset size exceeds the recommended limit