天天看点

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

详解用Python分析EDG夺冠的22.3万条弹幕数据以此来感受粉丝的热情!

11月6日,在英雄联盟总决赛中,EDG战队以3:2战胜韩国队,获得2021年英雄联盟全球总决赛冠军,这个比赛在全网各大平台也是备受瞩目:

1、微博热搜第一名,截止2021-11-10已有亿级观看量,微博粉丝数到达638.4万

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

2、哔哩哔哩已有几亿人气,总弹幕有22.3万,全站排行榜最高第2名,B站粉丝已有219.9万

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

3、腾讯、爱奇艺、优酷等视频平台800万人看过

4、虎牙等直播平台热度也是居高不下

5、央视新闻也发微博庆祝EDG夺冠

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

既然比赛热度这么高,那么本次我们就以bilibili为基准,通过采集EDG夺冠比赛视频在哔哩哔哩的22.3万条弹幕数据,再通过Python来分析进而感受粉丝的热情

利用爬虫技术抓取EDG战队在B站夺冠比赛视频的22.3万条弹幕数据

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

通过jieba、numpy等Python库对抓取来的弹幕数据进行分析并且可视化

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

利用pandas+自然语言处理(NLP)等对EDG夺冠比赛视频的弹幕数据进行情感分析,根据分析结果得出一些结论

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

首先进入EDG夺冠比赛视频URL:

https://www.bilibili.com/video/BV1EP4y1j7kV?p=1

哔哩哔哩已为大家整理好了EDG比赛视频,从开幕式到夺冠时刻,共有7个视频

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

哔哩哔哩弹幕数据接口:

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

这个接口就是B站弹幕数据专用接口,我们可以直接拿来用,这个接口中的oid可以理解为每个视频中的唯一标识符,它由数字组成,每一个视频都有唯一的一个oid,那么我们只要找到oid就可以请求相应比赛视频弹幕的API接口,从而抓取弹幕数据

获取oid

打开开发者工具,切换到Network选项,然后找到以pagelist为开头的请求接口

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

接着找到Request URL这个请求接口,打开新窗口直接用这个API接口请求,如下图:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

当我们直接请求这个API接口时可以看到JSON格式的数据,而在里面的cid就是我们需要的oid,如下所示:

当然我们也可以点击Preview选项,点击data,打开数据,而里面的JSON数据是折叠的,包括cid在内,如下图所示:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

可以看到,每个cid对应每一个比赛视频。我们也可以点击Response选项,里面的数据是真实的数据,意味着数据没有经过折叠,与直接请求Request URL返回的JSON数据是一样的

控制台输出如下:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

拼接URL弹幕数据API接口

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

一共有7个网址,对应7个EDG比赛视频的弹幕数据,我们点开第一个网址查看

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

抓取弹幕数据

从上一张图可以看到,每一条弹幕数据都在每一个<d>标签中,面对这种格式我们思考一下用哪种解析工具比较合适?答案当然是正则表达式,接下来我们要获取7个比赛视频的22.3万条数据,代码如下:

避免乱码,加上如下代码:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

由于弹幕数据共有22.3万条,这里仅展示EDG.txt部分弹幕数据,如下图所示:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

词云图制作

我们已经抓取到弹幕数据,接下来利用EDG背景图做一个词云图

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

代码如下:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

把迪迦奥特曼背景图片也制作一波吧,哈哈哈!

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

制作成迪迦奥特曼词云图形状,如下所示:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

当然你也可以使用pyecharts/echarts制作也行,还可以制作成你喜欢的图片形状。如果你接触过情感分析的话,也可以用这些弹幕数据分析一波

控制台输出:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!
EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

先安装一下用于情感分析的Python库:

效果如下:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

情感分析

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

情感数据描述

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

数据说明:emotion的平均值为0.63,中位数为0.67,25%分位数为0.49,可见不到25%的数据造成了整体均值的较大下移。另外上图的最下面可以看到,情感分析执行时间为48.8s,数据量还是挺大的。

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

数据说明:

由直方图可见,弹幕情感呈逐渐上升的趋势,说明粉丝对EDG夺冠情绪逐渐兴奋,很激动;

弹幕数据中有约4500条弹幕情感分在[0.5,0.6区间内;同时,有约4800条弹幕情感分在[0.8,0.9]区间内,这个区间粉丝的情绪最亢奋,估计是夺冠时刻,哈哈哈!

从区间[0.5,0.6]过渡到[0.6,0.7]以及从区间[0.8,0.9]过渡到[0.9,1.0]弹幕情绪出现下降,可能是因为在比赛中出现一些问题或者是比赛落幕了

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

以上关键词显示,粉丝发的弹幕中“冠军”是最多的,然后是“翻译”,”我们”,“卧槽”,“小姐姐”,“EDG”,“泪目“,”圣枪哥“,”贺电“,”edg“,由此看来,EDG真的很受欢迎,翻译小姐姐也挺受欢迎的。这在上面的词云图中也可以看得出来

参数说明:

sentence是需要提取的字符串,必须是str类型,不能是list

topK表示提取前多少个关键字

withWeight表示是否返回每个关键词的权重

allowPOS表示允许提取的词性,默认提取地名(ns)、名词(n)、动名词(vn)、动词(v)

计算积极弹幕与消极弹幕各自的数目:

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

积极弹幕数据为:17941

消极弹幕数据为:6054

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

由上图可见,由74.77%的弹幕数据是积极的,有25.23%的弹幕数据是消极的,总体来看,积极弹幕还是比较多的

取出部分消极弹幕数据

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

图中的“回血”,“求生欲”等消极弹幕有可能是EDG战队或者韩国队比赛不佳造成的

PIL库

jieba库

numpy库

pandas库

requests库

wordcloud库

matplotlib库

json,re,chardet库

snownlp情感分析库

完整项目(包括源码)获取方式:下载

也可添加本人微信号获取完整项目:MakerChen66

本人原创公众号原文链接:阅读原文

本人CSDN博客链接:阅读原文

原创不易,如果觉得有趣好玩,希望可以随手点个赞,拜谢各位老铁! 最近发现CSDN上好多人抄袭本人博客,还比我热度高,哎!毕竟是10月份刚刚创建的账号,知名度和粉丝没有别人高啊!
作者:南柯树下,Goal:让编程更有趣! 原创微信公众号:『小鸿星空科技』,专注于算法、爬虫,网站,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding! 版权声明:本文禁止抄袭、转载 ,侵权必究!

 更多独家精彩内容  请扫码关注个人公众号,我们一起成长,一起Coding,让编程更有趣!

——  ——  ——  ——  —  END  ——  ——  ——  ——  ———— 

         欢迎扫码关注我的公众号

          小鸿星空科技

       

EDG夺冠!用Python分析22.3万条数据:粉丝都疯了!

继续阅读