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数据即可。

import requests
import jsonurl = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'
res = requests.get(url).text
json_dict = json.loads(res)
#pprint(json_dict)for i in json_dict["data"]:oid = i["cid"]print(oid)```结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/9eeeb3863fd34d93ab69b94cdc355384.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv5LiA5Y-q6JCo5pGp6IC2,size_15,color_FFFFFF,t_70,g_se,x_16)
其实,这里cid对应的数字串,就是oid后面的数字串。3. 拼接url
我们不仅有了弹幕api接口,也有了cid数据,接下来将它们进行拼接,就可以得到最终的url。```python
url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'
res = requests.get(url).text
json_dict = json.loads(res)
#pprint(json_dict)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)

结果如下:
一共有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.text
pattern = 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")```结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/436f40ccda354806940b0391fb1a795d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5piv5LiA5Y-q6JCo5pGp6IC2,size_16,color_FFFFFF,t_70,g_se,x_16)
这只是其中一页的数据,共有7200条数据。完整代码
上述我已经分步为大家讲解了每一步过程,这里我直接将代码封装成函数。```python
import os
import requests
import json
import re
import chardet# 获取cid
def get_cid():url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'res = requests.get(url).textjson_dict = json.loads(res)cid_list = []for i in json_dict["data"]:cid_list.append(i["cid"])return cid_list# 拼接url
def concat_url(cid):api = "https://api.bilibili.com/x/v1/dm/list.so?oid="url = api + str(cid)return url# 正则提取数据
def get_data(url):final_res = requests.get(url)final_res.encoding = chardet.detect(final_res.content)['encoding']final_res = final_res.textpattern = re.compile('<d.*?>(.*?)</d>')data = pattern.findall(final_res)return data# 保存数据
def 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)

结果如下:

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

保姆级词云图制作教程
对于获取到了 数据,我们 利用EDG背景图,制作一个好看的词云图。

# 1 导入相关库
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imreadimport warnings
warnings.filterwarnings("ignore")# 注意:动态添加词语集
for i in ["EDG","永远的神","yyds","牛逼","发来贺电"]jieba.add_word(i)# 2 读取文本文件,并使用lcut()方法进行分词
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]# 3 读取停用词
with open("stoplist.txt",encoding="utf-8") as f:stop = f.read()
stop = stop.split()
stop = [" "] + stop# 4 去掉停用词之后的最终词
s_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])# 5 词频统计
all_words = []
for i in all_words_after:all_words.extend(i)
word_count = pd.Series(all_words).value_counts()# 6 词云图的绘制
# 1)读取背景图片
back_picture = imread("EDG.jpg")# 2)设置词云参数
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)# 3)绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")

结果如下:

B站主要分享Java,python数据分析,前端移动开发C++:

黑马程序员

Python全套教程:

Python数据分析全套教程

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

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

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

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

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

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

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

  4. 如何自学python数据分析-『』python数据分析该怎么入门呢?

    用python学数据分析难吗? 数据方向的薪资待遇还是比较高的,而且趋势也比较明显.随着据的落地应用,数据分析将有广泛的发展前景,未来广大的传统行业也将陆续释放出大量的数据分析岗位 通过Python来 ...

  5. EDG夺冠,用爬虫+数据分析+自然语言处理(情感分析)+数据可视化分析3万条数据:粉丝都疯了(唯一原创)

    原创不易,本文禁止抄袭.转载,违权必究! 目录 一.EDG夺冠信息 二.实战目标 2.1 网络爬虫 2.2 数据可视化(词云图) 2.3 自然语言处理(情感分析) 三.bilibili接口分析 四.编 ...

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

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

  7. Python数据分析系列之——王一博微博转发量分析1 数据说明2 粉丝结构初步分析3 粉丝画像最后的话

    首先说明一下本人不是王一博粉丝,也不讨厌王一博,只是最近在学习python数据分析,就随便找了一条微博转发量来分析一下,只是刚好抽中了王一博哈~ 但是有些时候的确令人疑惑,为什么wyb随随便便发一条微 ...

  8. 小猪的Python学习之旅 —— 15.浅尝Python数据分析

    小猪的Python学习之旅 -- 15.浅尝Python数据分析:分析2018政府工作报告中的高频词 标签:Python 一句话概括本文: 爬取2018政府工作报告,通过jieba库进行分词后做词频统 ...

  9. # 小猪的Python学习之旅 —— 17.Python数据分析:我主良缘交友了解下

    一句话概括本文: 爬取我主良缘交友所有的妹子信息,利用Jupyter Notebook对五个方面: 身高,学历,年龄,城市和交友宣言进行分析,并把分析结果通过pyecharts 进行数据可视化. 引言 ...

最新文章

  1. c语言中void指针,C 语言 void指针
  2. 2020年python工资一般多少钱-2020年Python发展前景如何呢?
  3. python可以自学吗-大家觉得自学python多久能学会?
  4. Red and Black---DFS深度优先算法
  5. 关于hexo与github使用过程中的问题与笔记
  6. Emmet的html语法
  7. 飞桨PaddleHub实现皮影戏
  8. protobuf java linux_linux下安装protobuf及其使用
  9. C#调用Bing的在线翻译接口Translator
  10. abb机器人写字程序实例_ABB机器人编程之程序流程指令(含案例)
  11. 计算机网络安全技术简答题,计算机网络安全技术简答题
  12. 打印机连接计算机主机的,电脑怎样连接打印机,详细教您电脑如何连接网络打印机...
  13. hashmap经典面试问题以及答案
  14. python写的一个王者荣耀刷金币脚本
  15. 数论—乘法逆元—费马小定理
  16. 实用的Google搜索技巧
  17. ⌈Linux_感受系统美学⌋ 一步一步迈向系统底层 - 寻觅Linux奥秘,探寻Linux下权限管理周边属性
  18. Android App瘦身新姿势——Android App Bundle
  19. 配电站房环境监测系统中使用的传感器
  20. 使用Alexnet实现CIFAR10数据集的训练

热门文章

  1. [群邑]那几个月的日子
  2. Google Earth Engine(GEE)——从Landsat数据生成30米分辨率的叶面积指数(LAI)图
  3. Unity游戏积分/计分UI系统制作方法
  4. GRE填空--从入门到高级准备
  5. C语言 do while语句的用法
  6. 18种根据屏幕字段查找潜在数据的技巧
  7. css中div和spand,IE and CSS Compliance
  8. 如何用pandas 计算客户留存率
  9. jsp如何引入html样式,jsp怎么引入css样式?
  10. 频域自适应 matlab,频域自适应滤波算法及应用.doc