EDG夺冠,粉丝炸锅了!

北京时间11月6日,在英雄联盟S11总决赛中,中国LPL赛区战队EDG电子竞技俱乐部以3∶2战胜韩国LCK赛区战队DK,获得2021年英雄联盟全球总决赛冠军。

这个比赛也是备受全网瞩目:

  • 微博热搜第一名,显示有8194万观看;
  • bilibili平台,吸引3.5亿人气,满屏弹幕;
  • 腾讯视频600万人看过;
  • 斗鱼和虎牙平台的热度也是居高不下;
  • 比赛结束后,央视新闻也发微博祝贺EDG战队夺冠;

既然比赛热度这么高,那大家都说了点啥?

我们用Python分析了31000条弹幕数据,满屏都是粉丝的祝福与感受。

我们不仅可以通过直播和新闻来感受比赛的整个过程,也可以通过Python来分析热点来感受粉丝的热情。

文中用到的源代码、字体文件、停用词文件、背景图,均可添加好友领取!

手把手教你获取弹幕数据

1. 简单说明

没看过直播的朋友不要紧,有回放呀!整个视频已经为大家整理好了,从开幕式,到五场比赛,再到夺冠时刻,一共7个视频。

每个视频中,都有粉丝发布的弹幕。今天要做的,就是获取每个视频里面的弹幕数据,看看粉丝在躁动的心情下,说了点啥?

不得不说,B站网页的变化速度真快,我记得去年还是很容易找到的。但是今天却一直没有找到。

但是没有关系,我们直接将以前的弹幕数据网址接口拿过来使用就行。

API: https://api.bilibili.com/x/v1/dm/list.so?oid=XXX

这个oid其实就是一串数字,每个视频都有一个独特的oid。

2. oid数据找寻

本小节就带着大家一步步找寻这个oid。要找到oid,首先要找到一个叫做cid的东西。

点击F12,先打开开发者工具,按照图中提示,完成1-5处的操作。

  • 第3处:这个页面有很多个请求,但是你需要找到这个以pagelist开头的请求。
  • 第4处:观察对应的Header下方,有一个Request URL,我们要的cid就在这个网址中。
  • 第5处:观察对应的Preview下方,就是请求Request URL,响应给我们的结果,图中圈起来的就是我们要的cid数据。

2. cid数据获取

上述我们已经找到了Request URL,下面我们只需要发起请求,获取里面的cid数据即可。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以价位(同音):762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

import requestsimport jsonurl = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'res = requests.get(url).textjson_dict = json.loads(res)for i in json_dict["data"]:    oid = i["cid"]    print(oid)1234567891011

结果如下:

其实,这里cid对应的数字串,就是oid后面的数字串。

3. 拼接url

我们不仅有了弹幕api接口,也有了cid数据,接下来将它们进行拼接,就可以得到最终的url。

url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'res = requests.get(url).textjson_dict = json.loads(res)
for i in json_dict["data"]:
oid = i["cid"]
api = "https://api.bilibili.com/x/v1/dm/list.so?oid="
url = api + str(oid)
print(url)12345678910

结果如下:

一共有7个网址,分别对应7个视频里面的弹幕数据。

随便点开一个查看:

4. 正则提取弹幕数据并保存

有了完整的url后,我们要做的就是提取里面的数据,这里还是直接采用正则表达式。我们以其中一个视频为例,为大家讲解。

final_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=437729555"final_res = requests.get(final_url)
final_res.encoding = chardet.detect(final_res.content)['encoding']
final_res = final_res.textpattern = re.compile('<d.*?>(.*?)</d>')
data = pattern.findall(final_res)
with open("弹幕.txt", mode="w", encoding="utf-8") as f:
for i in data:
f.write(i)
f.write("\n")1234567891011

结果如下:

这只是其中一页的数据,共有7200条数据。

完整代码

上述我已经分步为大家讲解了每一步过程,这里我直接将代码封装成函数。

import osimport requestsimport jsonimport reimport chardetdef get_cid():
url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'
res = requests.get(url).text
json_dict = json.loads(res)
cid_list = []
for i in json_dict["data"]:
cid_list.append(i["cid"])
return cid_listdef concat_url(cid):
api = "https://api.bilibili.com/x/v1/dm/list.so?oid="
url = api + str(cid)
return urldef get_data(url):
final_res = requests.get(url)
final_res.encoding = chardet.detect(final_res.content)['encoding']
final_res = final_res.text
pattern = re.compile('<d.*?>(.*?)</d>')
data = pattern.findall(final_res)
return datadef save_to_file(data):
with open("弹幕数据.txt", mode="a", encoding="utf-8") as f:
for i in data:
f.write(i)
f.write("\n")
cid_list = get_cid()for cid in cid_list:
url = concat_url(cid)
data = get_data(url)
save_to_file(data)12345678910111213141516171819202122232425262728293031323334353637383940414243

结果如下:

确实很棒,一共3.1w数据!

保姆级词云图制作教程

对于获取到了 数据,我们 利用EDG背景图,制作一个好看的词云图。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以价位(同音):762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

import pandas as pdimport jiebafrom wordcloud import WordCloudimport matplotlib.pyplot as pltfrom imageio import imreadimport warningswarnings.filterwarnings("ignore")
for i in ["EDG","永远的神","yyds","牛逼","发来贺电"]   jieba.add_word(i)with open("弹幕数据.txt",encoding="utf-8") as f:   txt = f.read()txt = txt.split()txt = [i.upper() for i in txt]data_cut = [jieba.lcut(x) for x in txt]with open("stoplist.txt",encoding="utf-8") as f:
stop = f.read()stop = stop.split()stop = [" "] + stops_data_cut = pd.Series(data_cut)all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])all_words = []for i in all_words_after:    all_words.extend(i)word_count = pd.Series(all_words).value_counts()
back_picture = imread("EDG.jpg")
wc = WordCloud(font_path="simhei.ttf",
background_color="white",              max_words=1000,
mask=back_picture,
max_font_size=200,
random_state=42              )
wc2 = wc.fit_words(word_count)plt.figure(figsize=(16,8))plt.imshow(wc2)plt.axis("off")plt.show()wc.to_file("ciyun.png")123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657

结果如下:

EDG夺冠,我用Python分析一波:粉丝都炸锅了相关推荐

  1. EDG夺冠,用Python分析一波:粉丝都炸锅了

    本文禁止转载 EDG夺冠,粉丝炸锅了! 北京时间11月6日,在英雄联盟S11总决赛中,中国LPL赛区战队EDG电子竞技俱乐部以3∶2战胜韩国LCK赛区战队DK,获得2021年英雄联盟全球总决赛冠军. ...

  2. EDG夺冠,用Python分析一波,词云图展示粉丝弹幕数据

    北京时间11月6日,在英雄联盟S11总决赛中,中国LPL赛区战队EDG电子竞技俱乐部以3∶2战胜韩国LCK赛区战队DK,获得2021年英雄联盟全球总决赛冠军. 这个比赛也是备受全网瞩目: 微博热搜第一 ...

  3. EDG夺冠,用Python数据分析一波:粉丝都炸锅了

    EDG夺冠,粉丝炸锅了! 北京时间11月6日,在英雄联盟S11总决赛中,中国LPL赛区战队EDG电子竞技俱乐部以3∶2战胜韩国LCK赛区战队DK,获得2021年英雄联盟全球总决赛冠军. 这个比赛也是备 ...

  4. 不破不立~EDG夺冠,用Python分析词云图展示粉丝弹幕数据,来感受粉丝的热情吧

    大家好~我是恰恰,好久不见啦~Python的乐趣就在于在互联网时代,能实现很多人工做不到的事~    虽然我不是经常玩游戏,但是我这该死的爱国情怀,在EDG夺冠的时候,我也是十分激动的! 北京时间11 ...

  5. python弹幕好坏词分析_用python分析一波哔哩哔哩弹幕

    又差不多到了过年的的时候咯.不知道几年的b站拜年祭会怎么样呢? 这时让我想起了B站第一次的拜年祭,如果我没记错的话第一次拜年祭是在2015年吧.我当初也是和大伙一起看了的. 最近无聊去看了看,发现视频 ...

  6. 需求分析报告应该包含哪些部分_2020最新抖音用户画像分析报告:粉丝都有哪些特点和需求?...

    本文相关:抖音用户画像分析.抖音用户画像报告.2020最新抖音用户画像分析等 不管是做抖音运营还是抖音直播,了解粉丝,了解用户的需求是非常重要的!做任何事情,对症下药你才能事半功倍!比如你的粉丝想要梨 ...

  7. EDG夺冠,Python分析一波B站评论,总结:EDG,nb

    前言 2012,一个卡牌,一个雷恩加尔,一群红衣少年的欢声笑语. 2013,一个杰斯,一个扎克,一场支离破碎的梦境. 2014,一个螳螂,一个兰博,一座摇摇欲坠的基地. 2015,一个寡妇,一个妖姬, ...

  8. 《少年的你》票房被刷爆?让我用python分析一波它好看在哪里!

    最近少年的你刷爆票房,但是是真好看还是假好看,我们也不知道,所以让我们用python来分析一下~ 票房过12亿 两位主演粉丝加起来过亿 电影话题量过亿 豆瓣8.4分, 时光网8.4分, IMDB 7. ...

  9. 火爆全网的《鱿鱼游戏》,今天用 Python 分析一波影评

    Hello,各位读者朋友们好啊,我是小张~ 这不国庆嘛,就把最近很火的一个韩剧<鱿鱼游戏>刷了下,这部剧整体剧情来说还是非常不错的,很值得一看, 作为一个技术博主,当然不能在这儿介绍这部剧 ...

最新文章

  1. 解惑:学.Net还是学Java?
  2. Exploiting “BadIRET” vulnerability (CVE-2014-9322, Linux kernel privilege escalation)
  3. android横向排列 间隙,Android开发消除横向排列的多个Button之间的空隙
  4. 前端vue显示柱状图_Vue—Echarts 柱状图
  5. 面对疫情等群体性危机,程序员如何在家高效办公?
  6. 双系统如何在Centos7中添加GRUB2启动项
  7. 使用 ADSync 集成 IBM Lotus Domino Directory 和 Microsoft Active Directory
  8. Java多线程系列--“JUC线程池”
  9. u8服务器修改数据源,用友U8服务器修改数据库端口
  10. 公式编辑器MathType中矩阵模板的使用技巧
  11. 【FastDFS】分布式文件系统FastDFS之FastDHT文件去重
  12. 撤回/修改已经发送的Outlook邮件
  13. 基于matlab的动态心形图案
  14. 计算机网络专业以后装网线,一种便于安装的计算机网络用网线安装盒的制作方法...
  15. 结合python使用ffmpeg将批量ts文件合成mp4。
  16. 2022 GopherChina大会紧急通知!
  17. 【Azure Data Platform】ETL工具(19)——Azure Databricks
  18. 名词性从句(1)——同位语从句(1)
  19. explorer被微信企业版劫持一例
  20. Wi-Fi 6关键技术及产业进展

热门文章

  1. 蔡高厅老师 - 高等数学阅读笔记 - 16 定积分的应用(旋转积、平面曲线的弧长、阿基米德螺旋、旋转体的侧面积、定积分物理应用-变力做功) -(71、72、73)
  2. 右键计算机菜单,右键菜单设置方法步骤【图文】
  3. oracle 英文版安装,Oracle10gR2 on RHEL4 x86_64安装技术文档(英文原版)
  4. 论文html5的英文文献,html论文英文参考文献(优质论文108个).pdf
  5. sqlyog同步mysql_大坑:用SQLyog连mysql的部分操作不能同步到从库
  6. python重复三角形代码_用于检查Python中两个三角形的一致性的程序
  7. java nio 客户端_Java网络编程:Netty框架学习(二)---Java NIO,实现简单的服务端客户端消息传输...
  8. 慕课python第六周测验答案_中国大学慕课答案第八单元测试答案_Python语言程序设计考试测验答案...
  9. python误删文件怎么恢复_记录一次脚本误删文件后恢复
  10. 【script】python 中文汉字与url的转换