爬取全民K歌用户歌曲

因为全民K歌下载用户的歌曲需要VIP,所以本次教你如何爬取全民K歌用户的歌曲下载打包到本地,只需要用户的K歌号并且没有浏览记录。
需要提前了解的知识:request请求,re正则表达式,fiddle抓包,文件存储

下面进入正题:理一遍思路:首先找到用户主页url -> 找到用户所有的歌曲的url以及其他信息 -> 进入单首歌曲页面抓取音频数据

首先需要找到用户主页的url,这里我们先用抓包试试
连上代理,进入用户主页,发现没有抓到用户主页相关的数据这里写图片描述
于是我们转换思路:
发现全民K歌点击分享链接用电脑打开能进入用户主页这里写图片描述
并且url = http://kg.qq.com/node/personal?uid= + 用户的K歌号 所以思路就明确了,找到用户的k歌号就能进入用户首页,所以接下来我们需要找到该用户所有的歌曲
这里写图片描述
按f12审查元素,发现存有每首歌曲的url以及图片标题等信息,但是只有显示已经加载了的歌曲,没有加载就没有显示,这是远远不够的

这里写图片描述
于是我们下拉页面,发现有个 ‘查看更多’选项,点击之后页面加载的tag也变多了,因此我们这里可以使用selenium来模拟浏览器点击查看更多来进行抓取页面元素
但是我们这里使用另一种方法:
点击查看更多,发现fiddle抓取到了链接表单,打开后
这里写图片描述
这里写图片描述
**

url  = 
http://node.kg.qq.com/cgi/fcgi-bin/kg_ugc_get_homepage?jsonpCallback=callback_0&g_tk=1270463893&outCharset=utf-8&format=jsonp&type=get_ugc&start=2&num=8&touin=&share_uid=679d998d222e358d&g_tk_openkey=1270463893&_=1536468638423**

删除掉无用的参数后

url = 
'http://node.kg.qq.com/cgi/fcgi-bin/kg_ugc_get_homepage?jsonpCallback=callback_0&type=get_ugc&num=8&share_uid=' + uid + '&start='

其中uid为用户的K歌号,start参数为用户页面的歌曲列表编号,一次能加载8首歌曲,start = 1时为初始歌曲,循环即可得到用户所有的歌曲表单

所以进入下一步骤,得到每首歌的url,通过主页点击歌曲之后发现url = http://node.kg.qq.com/play?s=L0LoLNL9WW6h_LrU&g_f=personal
这个play参数是什么呢,因为用户能够分享歌曲,所以猜测应该为shareid
即每个表单的这个部分
此外 表单中的其他参数即为图片,标题,评论数等其他信息,需要可自取
这里写图片描述
所以歌曲url = http://node.kg.qq.com/play?s= + shareid

最后一个环节,歌曲页面中抓取音频文件信息
打开页面,fidder如图
这里写图片描述
这个链接即为音频的真正文件,进入歌曲页面搜索这个url
这里写图片描述
所以我们只要用正则提取出其中的字典并提取就完成,然后request请求下载
思路已经ok,接下来开始代码编写:

这里写图片描述
首先定义各个参数,用户主页url 歌曲表单listurl,歌曲名字audionames,歌曲页面raw-url,音频链接audiourls,存放地址address
以及通用请求request方法

这里写图片描述
我们请求listurl,正则去掉头尾,剩下的就是标准的json字典了,提取出需要的歌曲名字,以及歌曲url并存储

这里写图片描述
现在已经得到所有用户主页的列表,然后用正则提取出每个音频文件的url并存储
这里写图片描述

最后保存到需要的path目录
这里写图片描述
创建文件夹目录以及用循环得到所有的列表表单这样就完成了抓取了

当然我们可以编写命令行更加便捷
这里写图片描述

最终效果展示:
这里写图片描述
这里写图片描述

相关源码已经上传至我的github:https://github.com/hchar/python-practice

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
全民K小程序的前端代码主要涉及用户界面的搭建和交互的实现。首先,我们需要设置小程序的主题和样式,包括背景色、字体、图标等,以确保用户体验的一致性。 其次,我们需要设计并开发各个页面,包括登录页面、首页、歌曲列表页面、个人中心页面等。在这些页面中,我们可以利用小程序框架提供的组件进行布局和样式的定义,比如使用wx-view、wx-text、wx-image等标签来渲染页面的内容。 在歌曲列表页面中,我们可以通过调用小程序的API或者与后台服务器进行交互,获歌曲的信息,并显示在页面上。用户可以通过点击歌曲来进入播放页面,这涉及到页面跳转的实现。 在播放页面中,我们可以使用Audio组件来实现歌曲的播放和暂停功能,并通过绑定事件的方式实现相关操作,比如播放、暂停和切换歌曲等。 另外,全民K小程序还需要实现一些功能,如用户的注册和登录、评论和点赞等,这些功能涉及到用户输入和数据的存储,我们可以使用表单组件来实现用户输入的收集,使用Storage API来进行数据的存储和读。 最后,为了提高用户体验,我们可以进行页面的优化和加载速度的提升,比如合理使用缓存、压缩静态资源、开启gzip等。 综上所述,全民K小程序的前端代码主要包括用户界面的搭建和交互的实现,涉及到页面的设计、数据的获和展示、用户输入的处理等方面。通过合理的代码编写和优化,可以提供用户一个流畅、易用且具有吸引力的全民K体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值