国内最火爆的音频app要属喜马拉雅,喜马拉雅FM APP于2013年上线,定位为音频分享与点播社区。与传统的广播行业相比,喜马拉雅致力于「让人们不仅能随时随地,听我想听,更能够轻松创建个人电台,随时分享好声音」。 目前在APP Store,图书类别排行榜第1,总榜(免费)第59名。截止2018年1月,已经拥有3.5亿的激活用户、500万名主播,市场占有率73%,人均收听的时长128分。想知道人们在上面听什么样的节目吗?
1、数据爬取
网页版的数据爬取比较简单,直接从浏览器上面去查看url等信息即可,不用想app一样要去抓包。这里从‘全部分类’的页面入手,获取分类的标签,再从标签入手遍历所有(由于每个分类列表只显示1000条,这里只获取每个分类播放数前1000的)的专辑页面url。
1.1 数据类型
这里使用的是python requests这个包进行爬取页面中的json文件,获取的数据不是音频文件,是每个专辑的相关描述性数据:
这些数据包括:专辑id、作者名称、分类、封面图地址、是否完结、是否付费、链接、播放数、子分类、标题、声音数量、作者id、vip等级。
原始数据保存起来作为备份后,进行数据清洗。
2、数据清洗
2.1 去重
由于分类的问题,可能一个专辑会被分配到不同的类目下,导致爬取的数据有重复。通过albumId作为唯一标示删除重复的数据即可,下图中由于保存到csv文件再读取,多出一个列:Unnamed:0,删除这一列即可。
2.2 异常值处理
有部分数据中的trackCount为0,即该专辑中的声音文件为空,作者删除了,把这部分改成1:
data_unique.trackCount[data_unique['trackCount'] == 0] = 1
2.3 分类标签由英文改成中文
分类标签category和subcategroy是后面分析用到比较多的,爬取到的是使用英文,改成中文会方便很多。
2.4 加工:增加一列‘平均一集的播放数’
data_unique['avg_playcount'] = data_unique['playCount']/data_unique['trackCount']
3、数据分析
3.1 专辑的每集播放数排名前20
首先满足下好奇心,到底这里面每集播放数最多的明星节目有哪些呢?
排名第一的数据好像有点多,每一集平均播放数居然超过1.2亿次,于是我决定看看这是什么样的神节目
5个音频,总播放量超过6亿,而且每一条的评论数都不超过10条,看到这里,感觉有点....
然后联想到我自己的专辑播放数...顿时明白了画饼充饥是什么意思了。
数据太多时,底部还可以支持图表的缩放
bar.set_global_opts(title_opts=opts.TitleOpts(title="前20专辑数量分布", subtitle="playCount"),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")])
3.2 所有分类中,每集平均播放数情况
由于总播放数收到专辑数量和声音数量的影响较大,用每集平均播放数更能反映受欢迎程度
结论有点吃惊,原来儿童类的那么受欢迎,看来不止上班族喜欢在上下班听音频,父母给小孩听儿童节目也是一大热门人群。再看看儿童这一细分领域里,不同的子类型分类情况:
文学类和学科教育相关的,还是比较受欢迎的。
3.3 每个类型的付费比例
APP上经常推荐一下付费节目,到底哪一种类型的付费节目比较多呢?
付费的节目都是比较优秀的,那不同类目的播放情况如何呢?
3.4 分析主播数据
这里当然少不了主播粉丝数排名,毕竟每个UGC平台,头部kol总是备受关注
郭德纲老师果然是实力担当,小岳岳也能排到前20名。当然这里统计还有点问题,只截取了平均每集播放数排到前5000的主播,后面可能有部分主播粉丝数很高也没统计到。
vx: xnm0768