python3爬取全民K歌
Python3爬取全民k歌
环境 python3.5 + requests
1.通过歌曲主页链接爬取
首先打开歌曲主页,打开开发者工具(F12)。
选择Network,点击播放,会发现有一个请求返回的资源是媒体类型,点击查看这个请求,发现是歌曲的链接地址,请求为get请求。
现在查看网页源码发现这个链接隐藏在网页的JS脚本中,至此,我们只需要利用requests库爬取歌曲的主页,然后通过re模块将我们需要的歌曲连接提取出来即可。
2.通过用户主页爬取
首先我们观察用户首页,发现每次加载是8首歌曲,点击查看更多时地址栏并没有变化,可以判断歌单信息通过Ajax请求。
查看Network,找到歌单信息的请求,发现是GET方式,返回的是json,包含歌曲的主要信息。所以我们代码中通过修改get请求参数就可以获取所有的歌曲信息。
观察网页源码,发现歌曲链接是由https://node.kg.qq.com/play?s= + Shareid + &g_f=personal构成。
所以,我们通过歌曲首页,然后通过GET请求获取包含歌曲信息的json数据,链接为https://node.kg.qq.com/cgi/fcgi-bin/kg_ugc_get_homepage,请求中有个share_uid,这个参数是用户的ID,通过修改这个就可以获取不同的用户的歌曲了。
还有一个重要的参数是start,这个参数是用户的歌单的页数,依次+1就能获取所有的歌曲信息,当之后没有更多的歌曲时,可以发现返回的json数据中data内的参数has_more = 0,所以在代码中通过判断has_more来判断是否跳出循环。
获取到数据后,我们通过re模块来获取我们需要的shareid以及歌曲的名字等等信息。
获取了shareid后,我们就可以组建链接来下载歌曲了。
代码地址:https://github.com/Mrliu8023/getquanmin
python3爬取全民K歌的更多相关文章
- python爬取全名k歌
python3 爬取全名k歌 代码: import re import requests import ssl ssl._create_default_https_context=ssl._creat ...
- Python爬取网易云歌单
目录 1. 关键点 2. 效果图 3. 源代码 1. 关键点 使用单线程爬取,未登录,爬取网易云歌单主要有三个关键点: url为https://music.163.com/discover/playl ...
- Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论
<后来的我们>上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲<我们>的MV看了一遍,还是那个感觉.那天偶然间看到Python中 ...
- python3爬取网页
爬虫 python3爬取网页资源方式(1.最简单: import'http://www.baidu.com/'print2.通过request import'http://www.baidu.com' ...
- python3爬取女神图片,破解盗链问题
title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true ...
- 【收藏】轻松导出全民K歌里任何人录制的短视频(MV)、歌曲的方法
有一次想把她在全民K歌里唱过的所有歌下载到电脑上,然后合成一个视频.但不知道怎么导出全民K歌里的歌曲,经过各种百度Google终于找到了一个用起来很简单的工具.不仅可以下载保存任何人录制的歌曲,还可以 ...
- Python3 爬取微信好友基本信息,并进行数据清洗
Python3 爬取微信好友基本信息,并进行数据清洗 1,登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整的好友列表. 其中每个好友为一个字典 列表的第一项为本人的账号信息 ...
- Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码
题记: 11月14日早晨8点,人人网发布公告,宣布人人公司将人人网社交平台业务相关资产以2000万美元的现金加4000万美元的股票对价出售予北京多牛传媒,自此,人人公司将专注于境内的二手车业务和在美国 ...
- python3爬取微博评论并存为xlsx
python3爬取微博评论并存为xlsx**由于微博电脑端的网页版页面比较复杂,我们可以访问手机端的微博网站,网址为:https://m.weibo.cn/一.访问微博网站,找到热门推荐链接我们打开微 ...
随机推荐
- day07 分支,循环
目录 if(分支) if的语法 if...else... if...elif...else if的嵌套 for循环 for-else 语句 for循环的嵌套(重要) range介绍 while循环 w ...
- Eclipse中使用GIT提交文件至本地
GIT提交文件至本地: 1. 右击项目——Team——Commit…: 2.在弹出的Commit Changes框中——选择要提交的文件——填写提交说明——点击Commit,即可提交至本地.
- webpack——entry,output,plugins,loader,chunk知识
entry:打包入口 代码的入口,找到依赖模块 打包的入口,webpack去哪个文件找依赖,或是去那个文件依赖的依赖 可以是一个或者多个入口 例如: 1.module.exports={ entry: ...
- Cookie和Session有什么区别
1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是Session. 典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状 ...
- js 正则表达式 整合
正则表达式:断言 取字符串区间: /(?<=["+ star +"]).*(?=["+ end +"])/ // 简单封装 Vue.prototype.s ...
- VUE使用中踩过的坑
前言 vue如今可谓是一匹黑马,github star数已居第一位!前端开发对于vue的使用已经越来越多,它的优点就不做介绍了,本篇是我对vue使用过程中以及对一些社区朋友提问我的问题中做的一些总结, ...
- Tokyo Tyrant(TTServer)系列(二)-启动參数和配置
启动參数介绍 ttserver命令能够启动一个数据库实例.由于数据库已经实现了Tokyo Cabinet的抽象API,所以能够在启动的时候指定数据库的配置类型. 支持的数据库类型有: ...
- 【Linux】进程调度概述
1 可运行队列 (基于实时进程调度) 调度程序中最主要的数据结构式运行队列(runqueue).可运行队列是给定处理器上的可运行进程的链表,每一个处理器一个. 每一个可投入运行的进程都唯一的归属于一个 ...
- Android LaunchMode案例篇
首先感谢小伙伴的关注.然后祝愿广大的情侣们节日快乐! 在开发中有时会遇到这种场景,用户点击注冊.第一步,第二步,完毕注冊跳转到登录界面,不须要用户一步一步的返回到登录界面.这是怎么实现的呢? 案例:有 ...
- HDU 3966 Aragorn's Story 树链剖分+BIT区间修改/单点询问
Aragorn's Story Description Our protagonist is the handsome human prince Aragorn comes from The Lord ...