最近看到身边好几个朋友都在用“全民K歌”这款软件在手机上K歌,使用频率还是很高,于是就想来看看全民K歌平台的用户究竟是一群什么样的用户?他们有什么样的特征。然后进行数据分析,强化自己的分析思维与实战能力。这一个过程我将会分为四个部分来写:数据获取,数据清洗,数据的呈现,分析报告的撰写。本文是第一部分。

python爬虫获取用户数据

进入用户的个人中心,下面的图中画方框的地方就是我们需要获取的数据:

接下来我们看一下这些数据的存储方式,打开nt之后我们可以看见这些数据都存储在网页中,这样就非常容易获取了,这里需要注意的有两点:一个是年龄和地址,这两者需要在获取之后分开进行存储,便于后面分析(粉丝数,关注数也是同理);另外一点就是性别问题,在网页中我们没有发现直接指示性别的关键词,其实这里的性别是存放在画红色圈中的class的名字里面的“icon icon_boy”如果是女孩则是“icon icon_girl”,这里获取之后我们用split去掉无关字符,只取boy和girl关键词。

我们直接用BeautifulSoup来获取这些数据:

这些数据也就是我们最终需要的数据,我们将他们存放在Mongodb数据库中,以便于后面的分析与导出:

通过分析我们发现每一个用户的个人主页链接都仅仅只是ID不同,我们将这些ID也存放起来,方便后面获取这些用户所唱的歌曲,这个后面获取到id之后直接传回来就可以获得这个用户的个人信息了。

获取多个用户的数据

为了获得更多用户的数据,我们需要从用户A进入它的粉丝页面,获取粉丝的ID,然后再进入粉丝B的个人主页获取用户的信息,再从这些粉丝的主页获取他们的粉丝。类似一个递归的形式,思路是这样,但在后面实际运行的时候,python老师出错,个人感觉应该是堆栈溢出了,目前还是没有搞定,但是可以获取粉丝的二级列表,对于目前的分析来说,已经足够了。

在用户的粉丝页面我们看到用户的粉丝列表是逐步加载的,也就是异步加载的形式,我们就只能来抓包了。

我们可以看见用户的粉丝数据是用json形式存储的,在每一次加载,一共加载20名粉丝的信息,这里我们只获取uid标签的值。接下来问题来了,我们获取的只是用户的前20名粉丝,如何获取其他的粉丝呢?方法肯定就是替换链接了,经过反复的查找,发现在已有的链接中每次加载变化的起作用的字段就是这个红色圈内的字段:

但是这样的一个数据是从哪里来的呢?如果是随机生成的就没有办法了获取下一级列表了。经过查找,我们发现这个last_tm的值在上一级的数据中存放着。这一下就好办了,只需要在第一次获取用户id的同时,将last_tm的值也同时获取下来,下一次加载时,直接掉用即可。

我们知道了如何分页,如何获取存储的数据,那么到底该循环多少次才能把所有的用户都获取下来呢?在最开始,我们已经知道了用户粉丝有多少,那么分多少也不就简单了。用粉丝数除以每页粉丝数20然后取整就是我们的循环次数了。

下面是获取用户粉丝的代码:


粉丝列表分页获取


获取每一个粉丝的id


进入粉丝二级列表

最后一共只爬取了8671条用户数据,数据量还是比较少,但做分析之用,基本够了。


存储的数据

python爬虫获取歌曲数据

在上面我们已经获得了8千多位用户,那么这些用户平时都喜欢唱什么歌,他们的活跃频率如何,这些都可以从用户发布的歌曲中获得一些信息。

这里是歌曲页的数据获取情况,其中最为重要的就是画红色圈的部分了,因为这一部分数据显示了用户的活跃时间,已经所使用的手机型号,这个手机型号在一定程度上就代表了这个用户的特征,所以这个数据是极为重要的。

同样的,这些歌曲的列表是用异步加载的形式显示的,我们直接来 抓包:跟上面一样是用json来存储信息的,我们直接解析获取,对于手机型号这一部分没有的,待会儿单独获取。

下面就是翻页的问题了,我们打开heahers查看链接比较之后发现每翻一页,连接中start便加1,而每一页有8条数据,这样一来每一个用户的作品我们需要翻的页数就是作品数除以8取整即可。

最后我们单独用一个函数来获取时间信息:

最后将所获得的数据存放起来即可。

这里再次注明一点,这里用的用户都是之前已经获取的用户他们所唱的歌曲,我将他们从CSV文件中读取了用户的id和作品数,传给这个程序使用。

最后获取到了84万条数据,数据的样式如下:

总结

这次数据的抓取遇到最大的一个坎就是在做用户的粉丝翻页的时候,一直没有找到last_tm这个 数据,导致翻页做不成,搞了好长时间。当时都已经放弃了,隔了一天之后再去看,突然在前一页中发现了第二页的last_tm,那一刻真的是挺开心的。

另外在数据的抓取过程中,最好的就是在最初数据存储的时候就经历将数据清洗好,比如那些不该有的字段都提前去掉在存储,多个数据在一起的也尽量拆开再存储,以便于后面的数据分析。

本文作者:橘子侠

来源:51CTO

「全民k歌」有什么秘密?网站数据分析之数据获取相关推荐

  1. linux k歌软件有哪些,“全民K歌”有什么秘密?网站数据分析之数据的获取

    最近看到身边好几个朋友都在用"全民K歌"这款软件在手机上K歌,使用频率还是很高,于是就想来看看全民K歌平台的用户究竟是一群什么样的用户?他们有什么样的特征.然后进行数据分析,强化自 ...

  2. “全民K歌”有什么秘密?网站数据分析之数据的获取

    最近看到身边好几个朋友都在用"全民K歌"这款软件在手机上K歌,使用频率还是很高,于是就想来看看全民K歌平台的用户究竟是一群什么样的用户?他们有什么样的特征.然后进行数据分析,强化自 ...

  3. 全民K歌推荐系统架构、算法及后台设计实践

    猜你喜欢 0.2021年轻人性生活调研报告1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.2021年10月份热门报告免费下载4.微博推荐算法实践与机器学习平台演进5.腾讯PCG推 ...

  4. 吴喆:全民K歌直播推荐系统详解

    分享嘉宾:吴喆 腾讯音乐 高级研究员 编辑整理:吴祺尧 加州大学圣地亚哥分校 出品平台:DataFunTalk 导读:推荐技术在迭代思路上已经形成一套成熟的范式,通过对经典算法的解构与重组,通常能够产 ...

  5. 【干货】全民K歌推荐系统架构、算法及后台设计.pdf(附下载链接)

    今天给大家带来腾讯音乐娱乐集团所做的分享<全民K歌推荐系统架构.算法及后台设计.pdf>,本分享共包含如下三大部分: 1.推荐系统架构及粗排设计: 2.精排与多目标模型迭代: 3.召回及推 ...

  6. 全民K歌直播推荐算法实践

    导读:直播是社交娱乐app的综合性变现工具,如何培养用户的心智,高效的建立用户和主播的多种连接 ( 点击.观看.关注.常看.常打赏 ) 是直播生态的重要问题之一.为了解决这个问题,各大平台所使用的方法 ...

  7. 全民K歌内容挖掘与召回

    分享嘉宾:timmyqiu 腾讯音乐 应用研究 编辑整理:郭真继 出品平台:DataFunTalk 导读:推荐系统一般分为两部分,召回阶段和排序阶段.召回阶段是从全量数据中挑选出用户可能感兴趣的一部分 ...

  8. 全民K歌推荐后台架构

    分享嘉宾:davidwwang 腾讯音乐 | 基础开发组副组长 编辑整理:梁尔舒 出品平台:DataFunTalk 导读:首先介绍一下我们业务背景,腾讯音乐集团,于2018年是从腾讯拆分独立上市,目前 ...

  9. 腾讯音乐:全民K歌推荐系统架构及粗排设计

    编辑整理:张振.于洋 导读:腾讯音乐娱乐集团 ( TME ) 目前有四大移动音乐产品:QQ音乐.酷狗音乐.酷我音乐和全民K歌,总月活超8亿.其中,全民K歌与其他三款产品有明显的差异,具体表现如下:以唱 ...

最新文章

  1. 程序员加入新团队必问的20道问题
  2. 小知识汇总----不断更新中...
  3. webapi put 404
  4. linux awk浅析(转)
  5. python 3.6.3 异常
  6. 异常查错java.net.SocketException: Connection reset
  7. laravel5.3-数据库操作下的局部or条件与全局or条件(orWhere的局部与全局)
  8. 关于top.html和bottom.html文件制作和调用的一点说明
  9. 长青藤cad_长青网
  10. 基于J2EE规范的中间件——EJB开发实例2
  11. 一元二次方程的简单解法
  12. 【安卓】3.修改列表增加下划线样式(保姆级图文+附示例)
  13. 使用 Python 从文件中提取 IP 地址
  14. 年薪30万+的HR这样做数据分析!(附关键指标免费模版)
  15. JAVA基础 之 String
  16. AT command
  17. Veritas针对通用数据保护再出手
  18. 小红书血洗1w+大v,他们该何去何从?
  19. 基于Matlab闭环Buck降压斩波电路Simulink仿真电路模型搭建
  20. Idea查看所有断点

热门文章

  1. MySQL 实现排名(分组排名)
  2. html 在ios下怎么静音,iphone – 如何在iOS上的PJSIP调用中实现静音功能
  3. cesium添加基于太阳位置的光照
  4. PDF怎么转换成PPT?这个方法拿捏一下。
  5. linux的ls命令没反应,Linux:ls命令如何使用
  6. 为什么不建议把数据库部署在docker容器内?
  7. 挂载google 云端硬盘
  8. 四川山海蓝图抖音如何开直播
  9. c# 数据绑定之 DataFormatString 格式
  10. 特征值特征矩阵与二次型(数学一)