社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 爬取40万条《都挺好》弹幕数据,发现弹幕比剧还精彩?

CDA数据分析师 • 5 年前 • 500 次点击  

图源《都挺好》官微

作者 | 周志鹏

本文转自公众号 数据不吹牛

狂野男孩大强下线的第三天,想他,想他,想他……


最近《都挺好》真的挺火。

火到什么程度?微博热搜霸榜,办公室评弹声四起,大强轻松攻占表情包,甚至连 N 年不追剧的“瘦宅”们也开始沉迷其中,大呼真香。

图源微博画手@马里奥小黄

剧很精彩,但追剧界有句俗话说得好:“弹幕往往比剧更精彩”,为了让精彩延续下去,我终究没能忍住对(腾讯视频)弹幕下手。

经过一番折腾,发现弹幕是 JSON 格式动态加载的,而且加载得非常有规律,30 秒一发(80-100 条),多出的会隐藏。共计爬取了 394452 条弹幕(雨露均沾,每集平均 8575 条,每 30s 的间隔爬取),来挖一挖弹幕这个宝藏。


01

弹幕基本盘概览


爬到的源数据是酱紫的:

发现有部分用户名是缺失的,由于这部分用户占比很小(仅 0.61%),所以我们直接暴力除去这部分噪声。

清洗之后,还剩下 117484 个用户发送的 392051 条弹幕,人均发送弹幕量 3.34 条。

再看看每个人发送弹幕数是怎么样分布的:

显而易见,大部分用户还是比较佛系的,71607 位用户(占比 60.95%)在 46 集中只发送过 1 条弹幕,他们内心严格遵循“爱就一个字,我只发一次”的弹幕发送准则。

发送条数在 3 条及以内的用户数占比达到了 83.73%,他们累计贡献了 133331 条弹幕,占到弹幕总数的 34.01%,反过来看,剩下 16.27% 的用户贡献了弹幕量的 65.99%。从这个角度来看,二八法则在这里更像是二七法则(20% 的用户贡献了 70% 的内容)。


02

是谁在疯狂发射弹幕,而弹幕又爱上了谁


弹幕发送量 Top10 榜单

我们都知道明成是“行走的造粪机”,那么从弹幕的角度来看,谁是“行走的弹幕发射机”呢?

为此,我们筛选出累计发送弹幕 Top10 的用户:

微微一操作(爬取、清洗和分析都使用 Python)


danmu_counts = df.groupby('用户名')['评论id'].count().sort_values(ascending= False).reset_index()danmu_counts.columns = ['用户名','累计发送弹幕数']danmu_counts.head(10)

上一步我们知道平均每个人在整部剧会发送 3.34 条弹幕,而弹幕发送排行榜前十的旁友们发送量都是过千级别的,我们再加上这个用户弹幕发送涉及到的集数,进一步看看平均每集发送弹幕数。为了更直观一些,可视化之:

一位名叫“@L的用户独占鳌头,是毋庸置疑的 C 位输出。在 46 集的电视剧中,他的弹幕血洗了 32 集,累计发射 2773 条弹幕,平均每集发送 86.66 条。

什么概念呢?

一集电视剧时长约 42 分钟,也就是说,这位大佬在看剧的同时,仍能保持每分钟 2.06 条的发送频次,还坚持了 32 集。

到这里大家一定会有质疑,觉得他肯定是刷了大量的“666”、“来了”之类毫无意义的内容来霸榜,所以我把他的输出内容筛了出来并做成词云图:

这……这位大佬输出的内容,不仅紧贴剧情,更是文风多变,时而总结内容,时而嬉笑怒骂,时而感慨人生,时而出口成诗,毫不夸张的说比一般弹幕都要有内涵。

我的膝盖,开始不听使唤了......

唯有疾呼“高山(频)仰止,景行行止”。

谁的弹幕最受青睐(点赞数最多)

根据每个用户累计点赞量排序,Get 到弹幕点赞 TOP10 排行榜:

第一名“追剧小奶鹅”平均每集发 6 条弹幕,每条弹幕竟然能够得到 4585 个赞!难道这就是传说中的精神领袖吗?难道大佬之外还有大佬吗?

在看剧的时候经常能够被他的弹幕刷屏,而且他的弹幕比其他人停留时间更长,颜色更艳丽。经核实,发现第一名,原来是“嫡系

腾讯视频电视剧弹幕专业陪聊,怪不得这么高的赞。

而第二名,又是我们的大佬“@L”,他凭借高频、稳定、持续输出累计获得 21.69 万赞,平均每条弹幕获赞 78.22 个。

大佬,请收下我的膝盖!

高赞弹幕有何套路

A)嫡系部队:

我们单独把腾讯的嫡系部队“追剧小奶鹅”拎出来,是因为他几乎垄断了高赞弹幕 Top300,嫡系光环加持,赞或许有虚高的嫌疑,但不妨碍我们单独分析他内容的套路(其实不少小奶鹅的弹幕并没有其他的精彩,但毕竟是亲儿子)

暴力总结起来就一句话:对仗工整提大强,感天动地夸明玉。

B)非嫡系部队:

高赞的(非嫡系)朋友们深得演唱会那句带节奏名言“现场的朋友们,举起你们的双手,让我看到你们的热情”的真传。

“觉得 XX 说得对点下谢谢”、“给 XX 点赞!”套路是获赞的一大法宝,另一法宝就是推动剧情的内容总结了。


03

弹幕视角主人公情感分析


谁是苏家最受弹幕关注的人儿

要分析谁是苏家最受弹幕关注的人,必须先根据关键词去甄别和定位到剧中角色。

这里列出了关于苏家人的简单词库,用来识别弹幕在议论谁。

54.31% 的弹幕没有主观倾向性,没有提及具体的苏家人(可能提及了剧中其他人,这里暂不考虑)。

明玉竟然抢过了大强的宝座,以 19.91% 的弹幕提及率拔得头筹,而大强则以 16.16% 的关注度紧随其后。

Emmm,无论是剧外热度还是追剧时弹幕槽点,我都觉得大强应该才是最受关注的啊!

作为一个严谨的追剧人,我开始排查弹幕,发现了很多戏精在发弹幕时都玩起了角色扮演,他们在发弹幕时,总是先在开头署名“苏明玉:” or 其他剧中角色,仿佛在代他们发声。

清洗完这部分调皮的用户之后,排名出现了新的变化:

果然,其他除外,大强以 15.16% 的关注占比领先其他家人一个身位,明玉又把两个哥哥拉开了一个身位的距离,占比 8.82%,明成和明哲关注占比分别是 4.84% 和 4.28%。

P.S. 明成关注度之所以低,是因为很多弹幕骂人并不会指名道姓:),而明哲嘛,对这个排名表示很失望。

弹幕情感分析

看剧(弹幕)时能够明显感觉到观众对于明成的态度从最开始的“过街老鼠,人人喊打”到后来的“明成懂事了”。

从数据分析的角度讲,明成是否成功洗白?大强最后催泪演绎效果如何?

这里我们调用百度情感分析 API,对每一条评价的内容进行情感打分,用情感分值来验证上述问题(分值在 0-1 之间,越靠近 0 负面倾向越强,越接近 1 则情感越情面)。

调用方法很简单:


#先安装aip包from aip import AipNlp#到后台配置权限,获得相关ID和KEY,目前API是免费且不限量的app_id = '输入实际ID'api_key = '输入实际KEY'secret_key = '输入实际SECRET_KEY'client = AipNlp(app_id,api_key,secret_key) #定义函数,以便循环爬取def senti_analy(text):data = client.sentimentClassify(text)sentiment = data['items'][0]['positive_prob']return sentiment for text in df['内容']:try:sentiments.append(senti_analy(text))except:#print(text)


    
sentiments.append('pass') df['情感分值'] = sentiments

打分筛选过后,我们统计出每一集苏家每个人的平均情感分值,并绘制出曲线图(4 个人导致折线图可读性较差,所以只有委屈大哥了):

1. 大强开局不错,和明玉持平,但凭借倪老师“作死小能手”的实力诠释,让情感分值迅速走低,11 集的低点正式印证了大强的“癫疯之作”,之后分值在 0.38 左右徘徊。随着“蔡根花宝贝”梗的出现,“嘲讽”替代了指责,让分值略微上浮(情感打分对于高级黑式嘲讽难以准确判断)。最后老年痴呆发病后大强对明玉的爱让分值一举超过 0.5,达到历史峰值,成功上岸。

2. 明玉是原生家庭的受害者,也是一个靠自己成功的女强人,前期爱恨分明,情感分值一度飙到 0.59(超过其他所有角色),18 集开始的买房纷争,网友纷纷表示强烈同情(例:明玉不能像十年前一样别理他们吗?情感分值只有 0.041),这让明玉相关的情感分值严重走低,随后弹幕主旋律仍以叫好和同情为主。

3. 明成的情感分值走势更有意思,开局最低,靠欺负妹妹让分值迅速降低,可谓“人人喊打”,后面则分值飙升,一度追上明玉,主要是因为明成期望值已经极低,但是他宠老婆的行为得到观众认可。中期本色挨骂,降至低谷。27 集明成情感分值再次超过 0.5,竟然是因为明成想吓走大强进行的一系列骚操作(尤其是广场舞)。再后来就是明成幡然悔悟,走上正轨,分值在稳定在 0.45 左右,也算成功洗白。

看来,开局降期望,中期随便作,后期催泪逆风翻盘,终究还是会被观众接受。

作者:周志鹏,2年数据分析,深切感受到数据分析的有趣和学习过程中缺少案例的无奈,遂新开公众号「数据不吹牛」,定期更新数据分析相关技巧和有趣案例(含实战数据集)。



CDA 课程咨询丨赵老师

联系电话:13381275813
扫描二维码





更多精彩文章

· 免费!10本必读的机器学习书籍(附下载)

· 收藏 | 这可能是史上最全的 Python 算法集!

· 第九届CDA认证考试,首位 Level 3 数据科学家诞生!!

· 盘点 | 那些奋斗在数据科学和人工智能领域的“女神”们

· Python程序员!变身!这有一张最高效成长路线图(附资源)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30385
 
500 次点击