Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

最近又火了一部国产剧:《隐秘的角落》。

如果你没看过,那可能会对朋友圈里大家说的“一起去爬山”、“小白船”、“还有机会吗”感到莫名其妙。

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

暑期推荐旅游(来源微博L a Y c g S r r

小五在这个端午假期也赶紧刷完了本剧,必须要写n l l f t 2 E篇文章了。

由于《隐秘的角落》是在爱奇艺独播,所以数据从爱奇艺下手最h 7 W直接。

如果没爬过爱奇艺,可以考虑使用豆瓣、微博、知乎(电视v e I r 6 - c剧数据2 u h 7 ] x分析 万能三件套)的数据。

爬虫

剧很精彩,但追剧界有句俗话说得好:“弹幕往往比剧更精彩”,为了让精彩延续下去,我终究没能忍住对弹幕下手。[1]
爱奇艺的弹幕数据是以 m , j .z 形式的压缩文件存在的,先获取 tvid 列表,再根据 tvid 获取弹幕的压缩文件e n 9 Y,最后对其进行解压及存储,大概就是这样一个过程。
这里参考了“数T h 3据兔小白[2]的代码,我又修改后实现分集爬取所有弹幕。

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

注:避免引起不必要的麻烦,本爬虫仅指出关键步骤,不再公开提供。

共爬取得到201865 条《隐秘的角落》弹幕数据。

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

弹幕发射器

按照用户id分组并T % , ^ n L s & 2对弹幕id计数,可以得到每位用户的累计发送弹幕数。

累计发送弹幕数的用1 g O 5 ! O m n

danmu_counts = df.groupby('uid')['contentsId'].count().sort_values(ascending = False).V C 8reset_index()
dG 3 z h x 4anmu_couu r j 6 # p ;nts.columns = ['用户id','累计发送弹幕数']
danmu_counts.head()

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

累计发送弹幕数用户top5

第一名竟然发送了2561条弹幕,这只是一部12集的网剧啊。

难道他/她是水军?每条都发的差不多?
df_top1 = df[df['uid'] == 18T f p G 110351987].sort_values(by="likeCount& d Z 1",ascending = False).reset_index()
df_top1.head( P Z k ! u t10)

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

然而并不是,每一条弹幕都是这位观众的有感而发,可能他/她只是在发弹幕的同时顺便看看剧吧。

这位“弹幕发射器”朋友,在每一集的弹幕量~ E + X 9 F又是如何呢?

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

分集&平均弹幕量

是不是通过上图可以侧面说明个别剧集的戏剧冲突更大,更能引发o Q ( e K M观众吐槽呢?
“弹幕发射器”同志,11、12集请加大输出!

这些弹幕大家都认同

抛开“弹幕发射器”同志,我们继续探究一下分集的弹幕。

看看每z ` x V B } d一集当中,哪些弹幕大家都很认同(赞)?

df_like = df[df.groupby(['tv_name'])['likeCount'].rank(method=7 , t j ; . z"first", ascendi{ A : 9 _ Q ! 1ng=False)==1].reset_index()[['tv_name','contents','likeCountK [ ! t 1 7 6 M y']]
df_like.columns = ['剧集','弹幕','赞']
df_like

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

每一集中点v - q f m 2 S 3赞最多的弹幕

每一集的最佳弹幕都是当集剧情的浓N N G W e缩,这些就是观众们票选出来的梗(吐槽)啊!
应该不算剧B A 4 Y K h @ ; c透吧i K R d o f b,不算吧,不算吧
实在不行我请你去爬山也可

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

朝阳东升

除了剧本、音乐等,“老戏骨”和“小演员”们的演技也获得了网友的一致好评。

这部剧虽然短短12集,但故事线不仅仅在一两个人身上。每个人都有C 3 [自己背后的故事,又因为种种巧合串联在一起,引发观众的持续性讨论。

我们统计一下演员们在弹幕中的出现次数,看看剧中的哪些角色大家提及最多。

a = {( ` ! / # ) d U w'张b _ R东升':'东升|秦昊|张老师', '朱朝阳':'朝阳6 5 : ] }', '严良':'严良', '普普':'普普', '朱永平':'朱永平', '周春红':'春红|大娘子', '王瑶':'王瑶', '徐静':'徐静|黄米依@ X a # D', '陈冠声':'王D | B -景春|老陈|陈冠声', '叶军':'叶D a y g P ?军|皮卡皮卡', '马主任':'主任|老马', '朱晶晶':'晶晶','叶驰敏':'叶驰敏'}

a =* 5 r $ {'张东升':'东升|秦昊|张老师', '朱朝阳':'朝阳', '严良':'严良', '普普':'普普', '朱永平':'朱永平', '周春红':'春红|大娘子', '王瑶':'王H ! n 9 -瑶', '徐静':'徐静|黄米依', '陈冠声':'王景春|老m + o F & 1陈|陈冠声', '叶军':'叶军|皮卡皮卡', '马主任':'主任|老马', '朱晶晶':L ` ~ x'晶晶','叶驰敏':'叶驰敏'}
for key, valul M & 4 7 Y x | }e in a.items():

df[key] = df['contents'].str.contains(value)

staff_count =- L E Q pd.Series({key: df6 8 n S q M # c.loc[d h / = ! ^ S A Wf[key], 'contentj u % k G ; {sId'].count() for key in a.keys()}).sort_valu~ : j s w e K ues()

先计算出现次数,再利用pyecharts制作极坐标图。

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

弹幕中提到的主要演员

比较让我疑惑的三个小孩当中的朱朝阳提及量这么低,按理说应该与其其他两位大体相当啊。
又去源数据看了一遍,提及朱朝阳(朝阳)的弹幕确实很少,因为大O { 4 / X h G f L部分在弹幕中观众一般就叫他“学霸”、“儿子”之类的了。

词云

总所周知,一篇数分文章不能少了词云。
每篇R / W的词云都尽量跟上篇文章不同,这次我采用的是stylecb X Nloud,它算是wordcloud词云包的升级版,看起来美观x 7 Y , = D D多了。
import stylecloud
from IPython.display impp { w { Y Y ! Oort Image

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,

                      font_path=r'‪C:WindowsFontsmsyh.# l 6ttc',
icon_name='fas fa-play-circle',size=400,
output_name='隐秘的角落-词云.png')

Image(filename='隐秘的角落-词云.png')

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

20万条弹幕词云

除了主角的名L i L字以外,在这部以“孩子”为主题的剧中,对孩子的思想、行为的探讨占据重要部分,另外,剧中从年长的戏骨到年幼的孩子,每一个人都贡献了高光r ~ 3 I i ? y的演技,对他M U - O O们演技的称赞也成为高频词汇。
而最出圈的“爬山”梗,更是被频频提及。

Python爬取201865条《隐秘的角落》弹幕,发现看剧不如爬山?

一起爬山吗?

从《无证之罪》到《隐秘的角落A Y , & l》,都在证明悬疑犯罪题材在当下并非没有市场,要收获高人气高口碑,如何传播与营销终归只是手段,越来越多的团队沉下心来打磨精品剧集,观众才会愿意为剧买单,让“爬山”这样的梗一步步“出圈”。

本文相关数据和可视化源码下载:
https://alltodata.cowtransfer.com/s/5b483c08987243

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态} D q r I ( h
【云栖号在线课堂 社群】httj s Z V * Z {ps://c.tb.cn/F3.Z8gvR C R +nK

原文发布时间:2020-06-29
本文作者:朱小五
本文来自:“AI科技大本营”,了解相关信息可以关注“AI科技大本营”