只需几分钟!用python爬取付费歌曲!
文 | ssw
来源:Python 技术「ID: pythonall」
有小伙伴说怎么爬取付费的音频
这里分享一个脚本或者说思路,免费下载VIP歌曲。
本人喜欢韩国TARA组合的“lovey dovey”,少女时代的“Gee”,张韶涵的“欧若拉”。
这几首在酷我、酷狗、QQ音乐都只能播放60秒试听片段,就算充了会员,也只有在会员期限内可以听。
所以呢,今天就利用爬虫来免费下载想听的付费音乐。
文章较短,建议看完全文,下载链接怎么找到的,没人跟你说估计难找到。
开始我也摸不着头脑,寻找过程应证了一句话“魔鬼藏在细节中”。
这是用脚本下载的付费歌曲:
顺便说一句,
代码中tkinter这种GUI模块操作起来繁琐,一段小功能需要一长串的代码,很像面向过程,所以我基本不碰它😅
不废话
从URL开始
search_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'
脚本里的这个地址怎么来的呢?其实就是网页上的搜索框。
打开酷我官网,输入“Lovey Dovey”并回车,出现url
它包括请求参数key,httpsStatus等。
脚本里对url发起请求,并在tkinter中显示搜索结果,就是这一段
输出的歌曲信息,如下图所示
验证歌曲信息
加一行打印item_text,然后左键点击tkinter中的歌曲信息,我们在pycharm的输出中可以直观的看到相关的歌曲内容
魔鬼藏在细节中之“绕过下载按钮”
有了歌曲信息,下一步是获取歌曲的下载链接。这个链接又藏在哪个旮旯里?
如果直接选择“下载歌曲”,会弹框让你下载客户端
这个时候重点来了,点击第一首歌的播放按钮
会提示“该歌曲为付费歌曲”,播放不了,同时下方未出现网络请求:
那么我们换一首免费的,点击第三首的播放按钮。免费的歌曲能播放,并且会自动添加到播放列表中:
然后刷新网页,下载链接出现了,并且能看到响应数据中有个mp3结尾的链接,就是它了!
这个下载链接就是播放列表中,最新播放的歌曲!
前面已经拿到了所有歌曲的信息,包括付费歌曲,按下载链接的格式去发送请求,写入文件就可以了
music_url = 'http://www.kuwo.cn/api/v1/www/music/playUrl?mid={}&type=convert_url3' \
'&httpsStatus=1&reqId={}' \
.format(song_rid, songs_req_id)
我们测试一下,脚本下载好的少女时代“Gee”用QQ音乐打开,弹框说“歌曲需付费”
看来这首歌是真的VIP会员歌曲。
本文是由 Python技术 公众号粉丝 ssw 投稿,欢迎大家继续踊跃投稿!
点击关注公众号,阅读更多精彩内容