前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?

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

作者头像
朱小五
发布于 2020-07-02 07:09:47
发布于 2020-07-02 07:09:47
68000
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

本文不涉及剧透!请放心食用

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

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

暑期推荐旅游

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

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

如果没爬过爱奇艺,可以考虑使用豆瓣、微博、知乎(电视剧数据分析 · 万能三件套)的数据。

爬虫

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

爱奇艺的弹幕数据是以 .z 形式的压缩文件存在的,先获取 tvid 列表,再根据 tvid 获取弹幕的压缩文件,最后对其进行解压及存储,大概就是这样一个过程。

这里参考了“数据兔小白[2]的代码,我又修改后实现分集爬取所有弹幕。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_data(tv_name,tv_id):
    url = 'https://cmts.iqiyi.com/bullet/{}/{}/{}_300_{}.z'
    datas = pd.DataFrame(columns=['uid','contentsId','contents','likeCount'])
    for i in range(1,20):
        myUrl = url.format(tv_id[-4:-2],tv_id[-2:],tv_id,i)
        print(myUrl)
        res = requests.get(myUrl)
        if res.status_code == 200:
            btArr = bytearray(res.content)
            xml=zlib.decompress(btArr).decode('utf-8')
            bs = BeautifulSoup(xml,"xml")
            data = pd.DataFrame(columns=['uid','contentsId','contents','likeCount'])
            data['uid'] = [i.text for i in bs.findAll('uid')]
            data['contentsId'] = [i.text for i in bs.findAll('contentId')]
            data['contents'] = [i.text for i in bs.findAll('content')]
            data['likeCount'] = [i.text for i in bs.findAll('likeCount')]
        else:
            break
        datas = pd.concat([datas,data],ignore_index = True)
    datas['tv_name']= str(tv_name)
    return datas

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

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

弹幕发射器

按照用户id分组并对弹幕id计数,可以得到每位用户的累计发送弹幕数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#累计发送弹幕数的用户
danmu_counts = df.groupby('uid')['contentsId'].count().sort_values(ascending = False).reset_index()
danmu_counts.columns = ['用户id','累计发送弹幕数']
danmu_counts.head()

累计发送弹幕数用户top5

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

真 · 弹幕发射器

难道他/她是水军?每条都发的差不多?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_top1 = df[df['uid'] == 1810351987].sort_values(by="likeCount",ascending = False).reset_index()
df_top1.head(10)

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

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

分集&平均弹幕量

是不是通过上图可以侧面说明个别剧集的戏剧冲突更大,更能引发观众吐槽呢?

“弹幕发射器”同志,11、12集请加大输出!

这些弹幕大家都认同

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

看看每一集当中,哪些弹幕大家都很认同(赞)?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_like = df[df.groupby(['tv_name'])['likeCount'].rank(method="first", ascending=False)==1].reset_index()[['tv_name','contents','likeCount']]
df_like.columns = ['剧集','弹幕','赞']
df_like

每一集中点赞最多的弹幕

每一集的最佳弹幕都是当集剧情的浓缩,这些就是观众们票选出来的梗(吐槽)啊!

应该不算剧透吧,不算吧,不算吧

实在不行我请你去爬山也可

朝阳东升

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = {'张东升':'东升|秦昊|张老师', '朱朝阳':'朝阳', '严良':'严良', '普普':'普普', '朱永平':'朱永平', '周春红':'春红|大娘子', '王瑶':'王瑶', '徐静':'徐静|黄米依', '陈冠声':'王景春|老陈|陈冠声', '叶军':'叶军|皮卡皮卡', '马主任':'主任|老马', '朱晶晶':'晶晶','叶驰敏':'叶驰敏'}
for key, value in a.items():
    df[key] = df['contents'].str.contains(value)
staff_count = pd.Series({key: df.loc[df[key], 'contentsId'].count() for key in a.keys()}).sort_values()

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

弹幕中提到的主要演员

比较让我疑惑的三个小孩当中的朱朝阳提及量这么低,按理说应该与其其他两位大体相当啊。

又去源数据看了一遍,提及朱朝阳(朝阳)的弹幕确实很少,因为大部分在弹幕中观众一般就叫他“学霸”、“儿子”之类的了。

词云

总所周知,一篇数分文章不能少了词云。

每篇的词云都尽量跟上篇文章不同,这次我采用的是stylecloud,它算是wordcloud词云包的升级版,看起来美观多了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import stylecloud
from IPython.display import Image 

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fas fa-play-circle',size=400,
                          output_name='隐秘的角落-词云.png')
Image(filename='隐秘的角落-词云.png')

20万条弹幕词云

除了主角的名字以外,在这部以“孩子”为主题的剧中,对孩子的思想、行为的探讨占据重要部分,另外,剧中从年长的戏骨到年幼的孩子,每一个人都贡献了高光的演技,对他们演技的称赞也成为高频词汇。

而最出圈的“爬山”梗,更是被频频提及。

一起爬山吗?

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

本文相关数据和可视化源码下载:

https://alltodata.cowtransfer.com/s/5b483c08987243

参考文章

[1]

小z,数据不吹牛: Python 爬取 394452 条《都挺好》弹幕数据,发现弹幕比剧还精彩?》

[2]

数据兔小白: 爬取爱奇艺弹幕后,我找到了共鸣

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
爬取24w+弹幕信息后,我果断去追剧了
数据获取是数据分析中的重要的一步,数据获取的途径多种多样,在这个信息爆炸的时代,数据获取的代价也是越来越小。尽管如此,仍有很多小伙伴们不清楚如何获取有用信息。本文以最近热播排行榜第一名的《流金岁月》为例子,手把手教你如何获取爱奇艺电视剧弹幕数据。
数据STUDIO
2021/06/24
1.1K0
python爬取7w+『赘婿』弹幕,发现弹幕比剧还精彩!
在上一篇文章【以『赘婿』为实战案例,手把手教会你用python爬取『爱奇艺』视频弹幕】,教会了大家如何爬取爱奇艺弹幕!
Python研究者
2021/03/05
6180
python爬取7w+『赘婿』弹幕,发现弹幕比剧还精彩!
豆瓣9.2分!17万条弹幕告诉你《沉默的真相》凭什么口碑高开暴走!
今天教大家用Python分析《沉默的真相》的17万条弹幕。公众号后台,回复关键字“沉默”获取完整数据。
CDA数据分析师
2020/10/09
5610
豆瓣9.2分!17万条弹幕告诉你《沉默的真相》凭什么口碑高开暴走!
Python爬取394452条《都挺好》弹幕数据,比剧情还精彩?
火到什么程度?微博热搜霸榜,办公室评弹声四起,大强轻松攻占表情包,甚至连 N 年不追剧的“瘦宅”们也开始沉迷其中,大呼真香。
IT阅读排行榜
2019/04/25
7250
Python爬取394452条《都挺好》弹幕数据,比剧情还精彩?
《隐秘的角落》开播之后就没下过热搜?
不会吧、不会吧,不会还有朋友没看《隐秘的角落》吧,如果没有断网的话,最近朋友圈、微博等都应该被这部只有十二集的国产网剧刷屏了。开播初豆瓣评分就已经达到9.0,甚至一度窜到9.2,要知道国产电视剧过9分的都寥寥无几,更何况还只是一部网剧,可能绝大部分人与这部剧本无缘,但是选择看剧的契机也正是这超高的评分。
奶糖猫
2020/06/28
5380
《隐秘的角落》开播之后就没下过热搜?
Python爬取《赘婿》弹幕
在近期的工作代码中我遇到了一些小问题,导致了我的更新慢了不少。今天我就想把我在之前遇到的问题分享给大家,并通过一篇实战内容来教会大家,希望各位小伙伴以后遇到类似问题的时候,可以想起我的文章,并解决问题。
程序员迪迪
2021/12/23
5950
用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
尽管抄袭傍身,也没能阻挡《爱情公寓5》进击的脚步。 最近爱情公寓电视剧微博发布了长达8分钟的揭幕视频,官宣新季将在2020正式开播。 几位主演纷纷转发宣传,将#爱情公寓5揭幕#的话题送上了热搜。 观众在经历过一次《爱情公墓》的诈骗后,能否接受《爱情公寓5》(下文简称爱5)? 让我们来分析一下。 获取数据 首先,我选取了在B站上最热的视频,目前已经179万播放量,2万弹幕。
朱小五
2019/11/28
5550
用Python分析《令人心动的offer2》的13万条弹幕,网友们都在吐槽什么?
综艺,是我们劳累了一天的放松方式,也是我们饭后的谈资。看着自己喜欢的综艺,时光足够美。而《令人心动的offer》,就是一个不错的综艺选择。
龙哥
2020/12/07
3250
用Python分析《令人心动的offer2》的13万条弹幕,网友们都在吐槽什么?
相关推荐
爬取24w+弹幕信息后,我果断去追剧了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验