由于现在各大音乐平台都对版权控制特变严重,歌曲下载,试听都需要充会员,或者掏钱买,而且还特别贵,这不刚刚女神跟我抱怨,没办法了,嘿嘿嘿,歌曲还是要听的,所以我只能想办法解决了。
QQ音乐作为腾讯旗下的产品,音乐版权可以说是比较全的,大部分歌曲的版权都有,所以今天小编给大家分享一个使用Python爬虫爬取QQ音乐歌曲下载链接,得到了链接,怎么下载本地呢,大家都应该懂的。
完整代码:https://github.com/YPSheng/python/tree/master/%E7%88%AC%E5%8F%96qq%E9%9F%B3%E4%B9%90%E6%AD%8C%E6%9B%B2
工具:Python编辑器
python3
爬取网址:https://y.qq.com/
一、首先进入扣扣音乐网页端
二、我们肯定有自己的偶像歌手啦,好,在搜索框搜索我们喜爱的歌手,右键点击检查,查看网页加载信息,由于加载出来的歌曲,直接获取网页也是查找不到的,它是通过ajax加载的。我们需要从加载的链接中,找到这个链接,然后查看获取到的json数据,里边包含着本页的所有歌曲信息
链接:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=58911455122071083&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E4%BA%94%E6%9C%88%E5%A4%A9&g_tk=5381&jsonpCallback=searchCallbacksong615&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0
三、好了,知道了怎么获取歌曲信息数据,我们开始研究一下这个链接
https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=58911455122071083&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=五月天&g_tk=5381&jsonpCallback=searchCallbacksong615&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0
这个链接可以分为两部分:
(1)域名路径部分:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?
(2)参数部分:ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=58911455122071083&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=五月天&g_tk=5381&jsonpCallback=searchCallbacksong615&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0
这么多的参数,说实话,我刚看到的时候,眼都黑了,如果你多观察几次你会发现,里面大部分的参数都是不变的,只有个别几个是变化的。这里不多说了,过程大家去体验,然后好好观察,我这里直接给大家贴出来,箭头标记的那几个就是变化的参数:
p 和 n的值,我们在获取到的json数据中找到,jsonpcallback获取就比较费劲了,对爬虫有研究的可以去找一下,它是在一个js文件中,考验大家的观察力以及对js文件的研究了,我这里直接贴出来。
三、我们先把这个扔一边,里面有歌曲信息我们一会会用到,下面我们先来看歌曲链接长得什么样,随便点击一首歌曲,然后会转到播放界面,然后查看网页加载信息,找到歌曲文件那个链接
链接:http://dl.stream.qqmusic.qq.com/C400003g4dpV4bOEJs.m4a?vkey=B5B9C5DF40E87B346611AC68502840C1C3FAB6C8C094B6F2B58698149B1DD66271046FD466E4635C10277397F04694F2D93DBB75904F9687&guid=2927636330&uin=0&fromtag=66
这个链接里面的参数主要是vkey,guid这两个比较麻烦,我们先看怎么获取vkey,我们继续查看加载的网页信息,会发现一个链接,返回的是一串英文字符串,特别长,不用管,这是加密后的,我们选择这个链接,右键点击在另外一个页面打开,会发现让下载一个文件,然后下载,打开文件就会发现秘密:
获取vkey,https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback28659450129999975&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback28659450129999975&uin=0&songmid=003g4dpV4bOEJs&filename=C400003g4dpV4bOEJs.m4a&guid=2927636330 访问这个链接所需参数,红色标记的还是需要改变的,songmid我们观察会发现,在第一次获取到的json文件里面包含着歌曲的songmid,就是media_mid的值,不过这个链接里面filename是拼接出来的C400+media_mid+.m4a:
guid的获取比较麻烦。它也是写在一个js文件里面的,大家可以自己去观察网页加载的js,然后去查找关于guid的获取方式,我这里直接贴出来:
四、好了,关于获取歌曲的链接所有的参数都找到了,那么现在就可以写爬虫了,我已将程序上传至github,地址:https://github.com/YPSheng/python/tree/master/%E7%88%AC%E5%8F%96qq%E9%9F%B3%E4%B9%90%E6%AD%8C%E6%9B%B2
我将抓取的结果写入到了一个文件里,大家可以选择存取到数据库,链接给获取到了,怎么下载就是大家自己的事了,已测试,完全可以下载。如有不对的地方请大家多多指教!
本文来自网络,如有侵权,请联系小编删除!
网友评论