打开网易新闻 查看更多图片

文 | 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 投稿,欢迎大家继续踊跃投稿!

PS:Python技术交流群(技术交流、摸鱼、白嫖课程为主)又不定时开放了,感兴趣的朋友,可以在下方公号内回复:666,即可进入,一起

老规矩,酱友们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别二维码,回复:酱子