Python爬取B站弹幕探索分析

前言

2023年8月29日,华为mate60Pro偷偷发售了,8月30日,华为mate60Pro登上微博热搜第一。作为一名数码圈的爱好者,岂能放过这个热点哩?于是,我选择了一个B站弹幕最多的mate60Pro解析视频进行弹幕分析,我们就通过数据的视角,去展开讲讲华为此次回归的影响。

一、弹幕爬取

虽然我自己不会爬虫,但是我有搜索引擎啊,那句话怎么说来着:互联网就是最好的老师!根据网上搜索的教程顺利的将视频中的8000多条弹幕爬取。

Python爬取B站弹幕探索分析_第1张图片

 二、数据探索&预处理

将爬取到的数据导入pandas,先来观察一下数据长什么样。一眼扫过去,全是大嘴的遥遥领先,以及抱怨发售太少没抢到货的,总的来说都是对新手机的喝彩与期待(这不废话么,难道华为回归都能黑?)Python爬取B站弹幕探索分析_第2张图片

现在的数据分为两列,一列是弹幕内容,另一列是复杂数字合成的字符串,中间用逗号隔开。然而这样的数据我们显然无法进行分析,于是先用split函数将字符串分割,以暴露出其真正蕴含的信息。

Python爬取B站弹幕探索分析_第3张图片

将分割后的Series合并上content组成的Dataframe就是我们最后需要的格式了,保存为Excel格式后,随后我们使用搜索引擎查出各个字段的名称及含义。

Python爬取B站弹幕探索分析_第4张图片

接着我们将新的Excel表导入,使用info查看数据信息。尽管这份数据并不复杂,我们还是先从大局上摸一摸这份数据的底。这里describe我加了include,让弹幕的统计分析也显示出来,如果不加上的话,只会显示数值型的统计结果。

Python爬取B站弹幕探索分析_第5张图片

这里的id被读取为字符串类型显然发生了错误,会影响后续的步骤。

于是使用astype函数将id转换为字符串类型。

再看一下describe的结果,其实弹幕分析看这个没多大意义,但是咱们淑芬要养成良好的习惯不是

Python爬取B站弹幕探索分析_第6张图片

 三、情感分析

好,数据探索完了,进入正题。

我们先使用SnowNLP这个库对这些弹幕做一个情感分析。用模型对每条弹幕进行训练并对这条弹幕所代表的情感打分,分数越高越积极(正面),分数越低越消极(负面),取值范围在0-1之间。SnowNLP在新闻评论舆情分析,电商评论等场景广泛运用。

使用pip install相关命令下载相关的库后进行导入(我下载的途中碰到有的包下载特别慢产生延时报错,在查找各方资料后发现在命令的最后加上

-i https://pypi.tuna.tsinghua.edu.cn/simple/,这样就会从清华镜像下载,速度快的飞起了

Python爬取B站弹幕探索分析_第7张图片

在导入相关的库后,使用lambda进行操作

Python爬取B站弹幕探索分析_第8张图片

接下来我们用seaborn来看一下整体的情感倾向:

Python爬取B站弹幕探索分析_第9张图片

Python爬取B站弹幕探索分析_第10张图片对sentiments结果进行描述可以看到,有1的评价!可最小值达到了0.0059,中位数0.45左右,平局值0.47,偏消极,标准差值大于mean的10%,数据较为离散,看来观众对华为新机的评价褒贬不一,众说纷纭。初步判断,存在一小部分观众高升喝彩,观众弹幕整体情感偏消极,但是不排除被B站弹幕互动机制,以及4G,5G等中性名词以及数字干扰所致。

接下来做词云图使用停用词过滤一下进行进一步的分析:

Python爬取B站弹幕探索分析_第11张图片

这里的停用词可以去百度上下载一个通用的,会帮助你过滤掉常用的语气词主语等,防止他们混淆视线。在我将111,1111等数字添加进停用词文本后输出的结果大量携带4G 5G等字样,与我先前的猜想一致。

Python爬取B站弹幕探索分析_第12张图片

于是我将5g、4g、苹果、华为四个词语添加进了停用词再运行一遍(这里为什么不加4G改呢,因为4G改是当初局座张召忠的一个梗,说出4G改的用户应该很支持华为,因此这个词带了强烈的情感在里面,奈何SnowNLP不懂啊

Python爬取B站弹幕探索分析_第13张图片新的词云图中显示“遥遥领先”、“轻舟已过万重山”、“4G改”、“哈哈哈”、“支持国货”、“买买买”、“支持”等字样,还有说6G的(笑cry)。通过词云图的展示,观众们对华为新机的态度可以说是一目了然了。(警醒:下次还是先用停用词把文本过滤了再进行情感分析,这样得到的答案更加准确)

四、时间分析

在一些商业化的分析中,时间分析在商业领域中非常重要。通过分析观众或用户的行为习惯,公司可以了解他们在不同时间段的活动和偏好,从而更好地制定营销策略和优化产品或服务。通过时间分析,可以回答一些关键问题,例如最佳发布时间、最受欢迎的产品或服务时段、用户活跃度的高峰时段等等,这些信息对于提高销售量与用户满意度非常有帮助。

由于B站弹幕的发送时间是经过加密的,我们需要导入datetime包来对ctime进行解析。

Python爬取B站弹幕探索分析_第14张图片

由于此视频的发布时间距离分析时间不足一周因此无法做年月周的分析,但是原理是相同的。

Python爬取B站弹幕探索分析_第15张图片

这里我们绘制了小时与弹幕数量的折线图,可以看出早晨7,8,9点以及晚上20-22点之间的弹幕数量最多,结合up主发布的时间是在29日晚20点49分可以猜测:视频一经发布就获得了极大地关注,B站肯定也是给了不流少流量,将其推入了量池子中,并在经过一夜的发酵后次日早晨从5点钟弹幕数量开始攀升,并在7 8点左右的时候达到了最高峰。应该是登上了B站的搜索榜单才会如此。

但是弹幕数量并不能完全诠释热度,毕竟存在着一人发多条弹幕的情况吧,于是为了更加严谨,我们再绘制一次uid(userid)的折线图,看看是否吻合就好了。

Python爬取B站弹幕探索分析_第16张图片

与id图基本别无二致,充分说明弹幕数量的代表性。

接下来我们根据creationtime进行分组与弹幕数量绘制成折线图来还原8.29~30这两天的状况:

Python爬取B站弹幕探索分析_第17张图片

由此图可得:视频一发布就发射了许多弹幕,毕竟这是个大新闻而且博主肯定也有不少粉丝的,在发布后一个小时左右加热到了顶峰,随后依然维持不小的热度,并在00点前再次迎来小高峰。应该是许多B友有睡觉前刷一次B站的习惯。只是没想到在深夜还有这么多的人活跃啊,原来夜猫子有这么多。接着在5-6点左右弹幕数量稳定的降低,看来是夜猫子都睡了。在29日上午,华为的新机已经成了一个大新闻,热度居高不下。基本可以说明,上一部分的猜想是正确的

Python爬取B站弹幕探索分析_第18张图片

uid图与上图基本一致。

五、用户画像

由于此次未能爬取到用户的id具体信息,因此只能做个简单的用户画像。

Python爬取B站弹幕探索分析_第19张图片

对uid进行分组,看一看谁发的弹幕最多,哪位是榜一大哥。

对发送弹幕数前几几位用户,记下他们的uid号,进行筛选,看看他们都说了些什么:

Python爬取B站弹幕探索分析_第20张图片

一号观众,情绪高亢,看来已经准备去当黄牛了,并且还对嘲讽华为的人打出了书名号嘲讽,看来对此次新机发布很满意

Python爬取B站弹幕探索分析_第21张图片

二号观众,打分达人,给出了很满意的分数

Python爬取B站弹幕探索分析_第22张图片

三号观众,三眼与胶囊应该指的是华为与iPhone挖孔设计,看来他更喜欢华为的三眼设计,其弹幕言语间不乏对华为设计的赞赏之词。

简单的用户画像分析到此结束,下次若能获取uid更全面的信息再进一步分析。

六、视频内容分析

表格中的progress字段代表着发送弹幕的时间,我们可以据此分析视频的内容,具体发生了什么引发观众们发送弹幕的激增呢?

progress代表的是视频播放的第多少毫秒发送的弹幕,先将其/1000,转换为秒,在利用strftime函数进行转化。

最后根据视频进度进行groupby分组,得到的折线图与列表进行分析

Python爬取B站弹幕探索分析_第23张图片

Python爬取B站弹幕探索分析_第24张图片

据图表所示,视频的一开始就引发了众多的弹幕,说明观众对视频内容的关注度和参与度很高,具有很高水平的活跃度。

Python爬取B站弹幕探索分析_第25张图片接着我们发现第二个弹幕的高峰点是在1分40秒左右,up主披露了mate60的外观,并与观众互动,让他们参与打分,观众通过弹幕与视频内容进行实时互动,增加观众的参与感和粘性,也说明mate60的外观设计师观众的一大关注点。

Python爬取B站弹幕探索分析_第26张图片那么7.50附近发生了什么使得弹幕数量快速提高了呢,原来是up说出了华为在汽车驾驶系统中写L2.999999系统而不能写L3,引发了弹幕一阵欢声笑语。接着还说华为的芯片是4.999999G。说明博主开玩笑或情境制造能够引发观众之间的社交互动和讨论,调动观众的情绪,提高观众的娱乐程度。

Python爬取B站弹幕探索分析_第27张图片

接着来看本视频弹幕数的最高点,时间在11:50秒附近,博主提出了一个终极提问,对于mate60与iPhone15你更看好谁。博主通过提问的方式,使观众积极参与到了视频的讨论中,并且是以两大旗舰机型对比的方式。说明这种对比类的提问能够激发观众的情绪,使之进一步参与到视频中来。

你可能感兴趣的:(jupyter,ide,python)