社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

只需几分钟!用python爬取付费歌曲!

Python绿色通道 • 2 年前 • 532 次点击  

每天学Python新技能

后台回复【大礼包】送你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会员歌曲。



    
  1. Python的打包神器—Nuitka!

  2. 中国各城市首轮感染高峰期再预测!(更新版)

  3. 美化 Jupyter Notebook 格式就没输过谁!

  4. 9个技巧使你的Python代码更Pythonic

  5. Jupyter Notebook 五大效率插件


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151081
 
532 次点击