前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python分析《青你2》67万条弹幕,看看有没有你Pick的小姐姐

Python分析《青你2》67万条弹幕,看看有没有你Pick的小姐姐

作者头像
CDA数据分析师
发布2020-05-21 17:46:12
8790
发布2020-05-21 17:46:12
举报
文章被收录于专栏:CDA数据分析师CDA数据分析师

CDA数据分析师 出品

作者:泽龙、Mika

数据:真达

后期:泽龙

【导语】:今天我们来聊一聊选秀节目《青春有你2》。Python技术部分请看第三部分公众号后台,回复关键字“青你”获取完整数据。

Show me data,用数据说话

今天我们聊一聊《青你2》

点击下方视频,先睹为快:

淡黄的长裙,蓬松的头发

你牵着我的手,看最新展出的油画

无论最近有没有看《青春有你2》,想必很多人都被这段歌词给洗脑了。就是这段过于魔性还有点像朗读的rap,在许多人脑中疯狂循环。成功把Jony J 逼疯,这也缔造了选秀节目的历史,原来还可以这么玩儿。

今天我们要聊的,就是最近火到不行的《青春有你2》(下文统一简称为《青你2》)。

01

火到频频上热搜的

《青你2》

作为爱奇艺在今年推出的综艺,《青你2》一经播出可谓刷足了存在感,从导师到选手,喜提N个热搜。

首先导师阵容就十分的强大。PD蔡徐坤,自带玩梗属性,在节目中开启了自嘲模式,“曾经我也以为打篮球是我的特长,后来才发现那只是爱好而已。”这还是那个擅长唱、跳 rap、篮球的坤坤么。

声乐导师Ella也是顶级配置,无论唱功和舞台表现力都没的说 毕竟SHE放现在也是天团级别的存在。

舞蹈导师Lisa是韩国当红女团blackpink的舞蹈担当,因为Lisa的加盟,《青你2》吸引了不少海外关注,爱奇艺终于可以吹嘘自己是个国际平台了。

最后就是说唱导师Jony J,地下音乐人出身,专辑在豆瓣基本在8分以上。这次随着"淡黄长裙"的出圈,也让我们收获了Jony J很多表情包。

比起鹅厂的创造营,在失去了多人运动某祥后,导师阵容真的有临时拼凑的嫌疑,但是真的能邀请到吴亦凡的加盟,凑齐EXO解约3子,这综艺效果炸裂了。

这次《青你2》能引起这么大热度,百度指数、微博热门不断攀升,和选手也有很大的关系,不少练习生业务能力很强,达到出道的标准。也有不少非常具有话题性的选手,除了淡黄长裙小姐姐、秦牛正威牛姐、还有小作精虞书欣等等,都频频西提热搜。

好了,一下子聊了这么多。下面言归正传,让我们数据告诉你,《青你2》中哪些小姐姐才是绝对的话题担当。

02

看《青你2》时

大家都在说些什么

目前《青你2》在豆瓣为5.1分,总共有6万余人进行评分。还没过及格线,在选秀节目里这个分数很一般。

那么关于《青你2》大家都在说些什么呢?

分析整理豆瓣的短评可以看到,大家的评论焦点主要集中在虞书欣、蔡徐坤上,看来欣欣子和坤坤果然是妥妥的话题焦点。

然后在节目内容上大家讨论的最多的就是"剪辑"、"镜头"、"话题"等方面。"淡黄的长裙,蓬松的头发"也频频出现。

《青你2》视频弹幕数据

接着我们再分析整理下爱奇艺《青你2》视频的弹幕,共计爬取了16期-32集 671776 条弹幕,让我们先看到结论,看看当中有没有你pick的小姐姐吧。

先看到弹幕字数分布

在发弹幕时,我们发现0-10个字的弹幕数量是最多的,共有45万余条。其次是10-20个字,达到19万余条。

高赞弹幕词云

一些高赞的弹幕也特别有意思,比如:

你是人家的闹心丸

求你了 别诗朗诵了好吗

我可以投导师吗

即将上演的对牛弹琴

都十分搞笑,网友们真是太有才了。边看选秀,边pick自己喜欢的小姐姐,边吐槽。

弹幕都在关注哪些选手呢?

从图中可以看到,虞书欣是妥妥的话题榜首。其次乃万、赵小棠名列二三。然后上官喜爱、蔡卓宜、林小宅也都是观众们特别关注的选手。

下面分别看下,这几位热门选手的弹幕画像:

虞书欣

虞书欣凭借在才艺展示环节聊晕蔡PD的精彩表现,赢得了大家的喜爱。她也把人生如戏发挥的淋淋尽致,分析了弹幕词云,"作"字出现的频率很高,欣欣子也用实力演绎了什么就是作到极致的可爱。

乃万

人家都是参赛,乃万还要兼任rap指导,"蛋黄长裙"小姐姐再加上牛姐,乃万真是太不容易了。词云中"好酷"、"很棒"、"心疼"等词都频出。

赵小棠

赵小棠也是出道大热之一,凭借"德云女孩"的身份,在节目中也是名句频出,但是素颜和综艺感真的很适合女团,真实不做作的风格也很容易让观众pick她。

上官喜爱

上官喜爱的词云基本上焦聚"实力"这个点,作为一个完全可以SOLO出道的女生,来青你2真的是降维打击,"老师"这个词都出现在词云图上,可想而知她的实力。

蔡卓宜

蔡卓宜作为一个广告女神,还是这个节目唯一一个离异女生,也算是备受期待,在最开始排序名次不佳,到后来的爆发,大家也都看到这个甜美的女生的努力。但是词云的出现的沈梦辰是咋回事?我特地找了一张沈梦辰的照片,对比一下感觉还是有点像的。

林小宅

从网红到“女企业家” 在参加这个节目之前,林小宅已经积攒了一定的人气。在她的弹幕词云中可以看到"造型温柔"、"好好看"、"可爱"等都是高频词。

03

教你用Python分析

《青你2》67万条弹幕

此次分析我们获取爱奇艺视频的弹幕并进行数据数据,数据获取部分的具体思路如下,数据分析部分代码暂略:

  1. 分析网页,由于数据是动态加载的,因此通过谷歌浏览器抓包获取真实的URL数据请求地址;
  2. 使用requests向网站url发起请求,以获取网页代码;
  3. 使用正则表达式re用于将HTML/XML文本内容解析,并提取里面的重要信息;
  4. 将获取的数据保存在本地。

01 弹幕在哪里找?

打开爱奇艺视频《青春有你2》视频随便选取一集,观察我们需要抓取的弹幕,可以看出弹幕是在视频播放之后才滚动加载,所以我们大概能得出弹幕是JS异步加载的。

然后去network找,通过一番查找,发现好像没有明显的danmu字样,也没有找到弹幕的文字,就直接去network搜danmu看会搜到什么吧,果然在XHR选项下面发现有个奇怪的网址。

然后点开网址预览Preview发现是一堆乱码,下载下来一个.z文件的压缩包,打不开。。但是我坚信这就是弹幕,毕竟business:danmu太明显了。然后用zlib打开,得到了我想要的。

其中content就是弹幕内容了,再来看看url的构造,其实可以简化,只需要得到相应的tvid

最终得到弹幕请求的URL地址如下:

https://cmts.iqiyi.com/bullet/tvid倒数4位的前两位/tvid最后两位/tvid_300_x.z

其中x的计算方式为片子总时长除以300秒向上取整,即按每5分钟一个包。

这样只要遍历x就能得到一集的弹幕,再获取并遍历所有tvid,就可以得到全部集数的弹幕。

分析完网页,下面就可以开始写爬虫代码了。

02 爬取并解析数据

具体代码如下:

代码语言:javascript
复制
# 导入包
import requests
import pandas as pd
import zlib
import re
import time
import parsel


def get_aiqiyi_danmu(tvid):
    """
    功能:给定tvid,获取爱奇艺一集的弹幕评论信息
    """
    # 建立空df
    df_all = pd.DataFrame()

    # 初始page_num
    page_num = 1

    while True:
        # 打印进度
        print('我正在获取第{}页的评论信息'.format(page_num))

        try:
            # 获取URL
            url = 'https://cmts.iqiyi.com/bullet/{}/{}/{}_300_{}.z'.format(tvid[-4:-2], tvid[-2:], tvid, page_num)

            # 添加headers
            headers = {
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'
            }

            # 发起请求
            try:
                r = requests.get(url, headers=headers, timeout=3)
            except Exception as e:
                r = requests.get(url, headers=headers, timeout=3)

            # 转换为bytearray对象
            zarray = bytearray(r.content)

            # 解压字符串
            xml = zlib.decompress(zarray, 15+32).decode('utf-8')

            # 用户名
            name = re.findall('<name>(.*?)</name>', xml)
            # 评论ID
            contentId = re.findall('<contentId>(.*?)</contentId>', xml)
            # 评论信息
            content = re.findall('<content>(.*?)</content>', xml)
            # 展示时间
            showTime = re.findall('<showTime>(.*?)</showTime>', xml)
            # 点赞次数
            likeCount = re.findall('<likeCount>(.*?)</likeCount>', xml)

            # 保存数据
            df_one = pd.DataFrame({
                'name': name,
                'contentId': contentId,
                'content': content,
                'showTime': showTime,
                'likeCount': likeCount
            })

            # 循环追加
            df_all = df_all.append(df_one, ignore_index=True)
            # 休眠一秒
            time.sleep(1)
            # 页数+1
            page_num += 1
        except Exception as e:
            break

    return df_all

获取到的数据如下所示,共计爬取了16期-32集 671776 条弹幕(20993条,每300s的间隔爬取),来看看弹幕下的《青春有你2》。

代码语言:javascript
复制
df_all.info() 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 671776 entries, 0 to 11356
Data columns (total 6 columns):
episodes     671776 non-null object
name         671776 non-null object
contentId    671776 non-null int64
content      671776 non-null object
showTime     671776 non-null int64
likeCount    671776 non-null int64
dtypes: int64(3), object(3)
memory usage: 35.9+ MB

所获取数据以数据表的形式存储,如下所示,包含信息:集数、用户名、评论ID、评论内容、评论时间点和评论点赞数。

代码语言:javascript
复制
df_all.head() 
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CDA数据分析师 出品
  • 01 弹幕在哪里找?
  • 02 爬取并解析数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档