首先,谈论下思路和准备工作。

思路是,先去网易云音乐平台试试水,看看各大音乐库是否“有机可乘”。当然这过程是用谷歌Network监控浏览器与服务器交互请求,如下图:

结果发现,果然是大厂,竟然把相关的有歌曲重要信息的json都给屏蔽了。

可以看到里面都是些无关紧要的东西:

通过网络一些博主,了解到了一些有用的接口,可以直接获取歌曲信息,比如这个:

https://music.163.com/api/playlist/detail?id=10169002

还有这个

https://music.163.com/api/song/enhance/download/url?br=320000&id=28445467  (歌曲下载 id为歌曲id,br为播放码率)

结果发现,前者的重要字段mp3Url缺失values值,而后者依赖song_id,没有id无法获取对应信息。

如图:

--没有输入id的情况:

我们要获取什么信息呢,主要是歌曲下载链接,歌曲id,歌词下载链接,之类的~

现在唯一的希望是通过歌曲id,来通过这个接口一条条获取下载url:https://music.163.com/api/song/enhance/download/url?br=320000&id=  (需补充歌曲id)

那么完整流程是这样的:获取歌曲id,以获取下载链接,若能获取歌曲名最好,不能则命名,通过程序批量下载到指定文件夹,以新命名的名字保存。

放下代码:

...
r = requests.get('https://music.163.com/api/playlist/detail?id=10169002')
arr = r.json()['result']['tracks']   #热歌榜歌
# mp3_id = arr[i]['id']  #API变更,现在从id入手
# mp3_id = 27808044  #测试专用~~

这里的http获取链接是测试链接,是  #香港电台音乐龙虎榜

通过浏览器开发者选项(Chrome里)可看到json 的封装层次:

需要注意的是:刷新才可看到此请求

我们展开它,得到下图:

按照代码逻辑,这样mp3_id可以正常获取到,但是笔者发现有点尴尬的是,只要是热榜的歌曲,就算有歌曲id了,但是获取不了,url。举个列子:

图中青春终老的id:574963447

去接口查看url:很遗憾是空的

无奈,只能去非热榜抠出歌曲id,但是非热榜没有查出对应接口可以列出全部歌曲id,

所以这些准备没有用。只能通过美丽汤(BeautifulSoup)过滤或者,手动录入。这里笔者尚未用过美丽汤,暂时手动录入。

于是有了:

L = [1294910785,32507038,557583281,557581967,471385043,574921549,415792881,417859631,27955653,27890306,
32192436,516657051,571340283,468517654,27955658,27955654,35528482,515803379,474567044,525241230,553543014,
466122271,27955656,518894283,412902689,32507039,27955652,169140,169137,429450375]  #在薛之谦#个人专辑录入for i in range(30):print(L[i])for mp3_id in L:   # name = str(i+1) + ' ' + arr[i]['name'] + '.mp3'n = len(L)n = n - 1global namename = str(mp3_id) + '_薛之谦.mp3'apiUrl = 'http://music.163.com/api/song/enhance/download/url?br=320000&id=' + str(mp3_id)  #可以通过apiUrl查到Mp3的urlprint('apiUrl = ' + apiUrl)# print(name)# mp3_id = arr[i]['id']  #API变更,现在从id入手# mp3_id = 27808044  #测试专用~~newr = requests.get(apiUrl)

这里可以看到是另命名的方式命名歌曲,以id+薛之谦.mp3命名,

newr可以获取到单个歌曲的歌曲信息,

通过正常的字典操作,获取url

这样就可以顺利下载了。这里因为已经下载就不下载了,复制代码文件到其它目录,dos环境下切换到此目录,运行:

----

好的,收工。

放下完整代码:

# -*- coding: utf8 -*-'this is a greate beginning'
__author__ = 'Hardy'
#python3.7.0########import this
import requests   #注意request库和requests有根本区别,!去python.org官网的pypi里下载正确的库
import urllibtest = 'test'
#网易云音乐下载-python爬虫尝试
#榜单歌曲批量下载
# r = requests.get('https://music.163.com/discover/toplist?id=19723756')  #云音乐飙升榜
# r = requests.get('https://music.163.com/api/playlist/detail?id=3779629')   #云音乐新歌榜
# r = requests.get('https://music.163.com/api/playlist/detail?id=2884035')   #网易原创歌曲榜
# r = requests.get('https://music.163.com/api/playlist/detail?id=3778678')   #云音乐热歌榜
r = requests.get('https://music.163.com/api/playlist/detail?id=10169002')  #香港电台音乐龙虎榜
# r = requests.get('https://music.163.com/api/playlist/detail?id=2250011882')  #抖音排行榜#歌单歌曲批量下载
# r = requests.get('https://music.163.com/api/playlist/detail?id=2388322013')   #最是粤语最为情深 也唯独你最难忘怀
# r = requests.get('https://music.163.com/api/playlist/detail?id=118289341')    #♫乡村音乐你是如此好听arr = r.json()['result']['tracks']   #热歌榜歌
L = [1294910785,32507038,557583281,557581967,471385043,574921549,415792881,417859631,27955653,27890306,
32192436,516657051,571340283,468517654,27955658,27955654,35528482,515803379,474567044,525241230,553543014,
466122271,27955656,518894283,412902689,32507039,27955652,169140,169137,429450375]
for i in range(30):print(L[i])for mp3_id in L:   # name = str(i+1) + ' ' + arr[i]['name'] + '.mp3'n = len(L)n = n - 1global namename = str(mp3_id) + '_薛之谦.mp3'apiUrl = 'http://music.163.com/api/song/enhance/download/url?br=320000&id=' + str(mp3_id)  #可以通过apiUrl查到Mp3的urlprint('apiUrl = ' + apiUrl)# print(name)# mp3_id = arr[i]['id']  #API变更,现在从id入手# mp3_id = 27808044  #测试专用~~newr = requests.get(apiUrl)s = str(mp3_id)if s == '':print('error,now we can\'t download it')else:n_arr = newr.json()['data']['url']    #这里正常情况下可以获取urlif n_arr != '':link = n_arrurllib.request.urlretrieve(link,'网易云音乐\\' + name)print(name + ' 下载完成')
print('Download Completed!!!')#歌词:http://music.163.com/api/song/media?id=429450375
#单曲Json包:http://music.163.com/api/song/enhance/download/url?br=320000&id=429450375
#歌曲播放器: https://music.163.com/api/song/enhance/player/url
# https://music.163.com/api/song/enhance/download/url?br=320000&id=28445467  --歌曲下载 id为歌曲id,br为播放码率
# 接口数据用的id=123456&ids=[123456]&br=3200000  --经测试可用,请各位合理使用,免得又被封禁

环境准备说明:Python3、Requests库、request库  (库都是在Python.org官网的Pypi菜单里下的)、BeautifulSoup库。Sublime代码编辑器、Chrome浏览器、一定硬盘空间。

美中不足的是此此操作没有用美丽汤完成。

需要注意的是:在代码路径需要创建名为“网易云音乐”的目录

关于库的一些小技巧:新建个文件以py结尾:

里面输入导入库的code:然后按Ctrl+B执行

如果没有以下提示是正常的

正确的结果:

好的,就写到这。

通过手动添加id从云音乐接口一键下载音乐(Python3实现)相关推荐

  1. java qq音乐接口 api,QQ音乐解析API接口更新:支持HQ,ape,flac无损音质,缓存功能

    {"Code":"OK","keyword":"\u6296\u97f3\u70ed\u6b4c","page ...

  2. android studio 60音乐播放器 下载音乐

    activity_main.xml 111111111111111111 <?xml version="1.0" encoding="utf-8"?> ...

  3. 音乐播放器下载音乐需要收费

    现在好多音乐在播放器中下载是需要收费,解决方法. 1.下载酷我音乐播放器安装 2.试听下载收费的音乐 3.找到安装目录如:C:\kuwo\kuwomusic\8.0.3.1\bin\temp\KMus ...

  4. 从虾米音乐缓存中下载音乐

    浏览器:谷歌 听歌网站:虾米音乐 搜索自己想听的歌,点进去,先不开始听 右键打开检查---->NETWORK 搜索mp3文件,此时没有MP3文件 开始播放音乐,出现一条路径,复制该路径,用浏览器 ...

  5. 网页版音乐播放器 下载音乐 教程

    一 .咳咳 , 每天 一个白嫖小技巧,它来了它来了!!! 打开W_yi音乐,输入想要get的音乐: 按下F12会出现以下也页面,依次点击图中编标记的两处地方: 出现以上页面以后就点击播放了,等播放一遍 ...

  6. USB接口一键下载程序电路解析

    Stm32烧写程序一般有两种方式:一种是基于JTAG(SWD)的程序下载方式,这种方式需要仿真器才能高效与快捷地调试STM32单片机系统,例如,J-LINK与U-LINK等均是很好的仿真器,这种方式的 ...

  7. 【有效】最新爬取音乐,纯接口访问实现。Python3、requests、美丽汤、tqdm实战

    目录: 爬虫之国内音乐爬取 一.设计思路 二.使用资源 三.具体代码编写 四.优化空间 五.应用 一.设计思路 1.选取目标音乐平台 2.获取目标的关键信息,如音乐接口信息.音乐名称和大小 3.分析接 ...

  8. 微信服务开发——读取百度音乐接口返回音乐

    最近用了很多网上的坑爹接口,都泪奔了,不说了,都是泪啊~ 前两天做了个微信返回音乐的接口,先来看下效果: 出来之后在手机微信里面就可以实现音乐播放了. 技术很简单,首先访问百度音乐接口,传入音乐名称和 ...

  9. python爬去音乐_python爬去音乐

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如 ...

最新文章

  1. python Process finished with exit code -1073741819 (0xC0000005) 解决
  2. Mybatis---总结
  3. 算法导论 6.2-5
  4. 透过现象看本质-使用vs.net第二天
  5. stm32 vscode 编译_vscode+gcc开发stm32环境搭建
  6. 2020已去,2021未来
  7. 2021年的高考大约多久可以查询成绩,2021高考完什么时候可以查分数 查成绩的时间...
  8. (转)Bootstrap 之 Metronic 模板的学习之路 - (5)主题布局配置
  9. 【Liteos系列】之osCmdReg
  10. 什么是 DevSecOps?系列(一)
  11. java多台_java多态
  12. JAVA常见异常解析
  13. 外挂三部曲(三) —— Android 图片相似度对比
  14. 32 Qt 之绘图之绘制一个漂亮的西瓜
  15. MySQL取离当前时间最近的记录
  16. 12、ABPZero系列教程之拼多多卖家工具 拼团提醒功能登录拼多多实现
  17. 9660图像 缺少iso_刻录映像时出现的问题
  18. IL2CPP是什么?
  19. 小米5android p,久违的刷机 小米MIX Android P DP5 上手体验
  20. 44道JS难题,做对一半就是高手

热门文章

  1. ios和android王者cp,王者荣耀S21安卓和ios可以互通情侣关系了吗 安卓和ios怎么加好友...
  2. c 语言解析png图片文件信息,利用C/C++二进制读写png文件的方法示例
  3. Python爬虫实战| Python爬取英雄联盟高清壁纸
  4. mybatis 丢失最后一个属性为空_盘点曾经热血传奇中被谣传带隐藏属性的装备,最后一个坑了不少玩家...
  5. 让chatGPT回答一些有趣?无聊的问题
  6. web前端培训哪家好
  7. 安乐高机器人图纸_乐高机器人拼装图纸 | 手游网游页游攻略大全
  8. 如何衡量员工的积极性以提高绩效
  9. flutter log4d 日志包的使用
  10. 联发科宣布 Helio P70 芯片,比 P60 提升不大,11 月份上市