准备
工具:python 3.5,pycharm
类库:requests库
示范歌单
一张轻音乐歌单,一共包含了50首歌曲
QQ截图20170320191532.png导入模块
from urllib.request import urlretrieve
import requests
关于这两个模块的功能用到时会具体介绍,为了方便起见,下面把请求头省略了,
因为比较长,但是放弃它对于功能的实现影响不大。
发送请求
r = requests.get('http://music.163.com/api/playlist/detail?id=606061417')
我们用requests.get()来进行网络请求,获取它的响应流文件
(你可以想象成GET在说:喂,网络服务器,请按照这个网址给我信息)
这里要注意了,我们请求的网址其实和歌单图片中的那个网址是不同的,你可以把这里的网址复制到浏览器中看一下,浏览器会显示这样的画面
QQ截图20170320200451.png你有没有发现这里出现了那个让我们众里寻她千百度的'mp3Url'
JSON解析
arr = r.json()['result']['tracks']
为什么是json ?json的格式数据是这么写的
{"user":{"firstname":"Ryan","lastname":"Mitchell","username":"Kludgist"}}
网易云API返回给我们的数据是JSON格式。
总结一下
第一行代码:获取到JSON格式的数据
第二行代码:用JSON解析数据
批量下载
for i in range(1,51):
try:
name = arr[i]['name']
link = arr[i]['mp3Url']
path = 'C:\\' + name +'.mp3'
urlretrieve(link,path)
i += 1
print(link)
except:
pass
1.link = arr[i]['mp3Url']怎么理解?
是不是有50首歌,每首歌都有这样的数据包括:picUrl , img1v1Url, mp3Url
但是我们要的是mp3Url,所以最后link是不是就代表了每首歌的下载链接
2.urlretrieve()两个参数,一个Url,一个是Path,这个函数的功能就是把网链的内容下载到你的本地,你给它picUrl,它就下载图片;你给它mp3Url,它就下载歌曲
3.try,except 用来检测异常,付费歌曲会自动跳过
完整代码
QQ截图20170320195249.png运行结果
QQ截图20170320210700.png结语
学到这里你已经可以把网易云客户端卸载了.但是这只是简单的处理了一个歌单的所有歌曲,那么怎么把多个歌单的歌曲导入到本地呢?请看下一篇
网友评论