说明
今天给大家介绍一个项目:用requests库直接从网页浏览器上下载网易云音乐,这是喜欢听歌的朋友的福利哈,学完之后你就可以直接卸载网易云音乐客户端了。当然也有人可能要问了,为什么要搞的这么麻烦,直接从客户端不就可以批量下载了。对于这样的疑问我会告诉你,因为我很闲吗(摊手)

如果你对requests库不太熟悉的话,可以先去看一下文档,很容易理解。

浏览器操作
让我们首先在浏览器中打开网易云音乐,当遇到好听的歌曲,想下载到本地的时候,就会出现这样的提示

python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

那么怎么才能在不下载客户端的前提下实现下载呢?

是不是我们只要找到音乐的下载网址(mp3Url),然后用urlretrieve这个函数就可以下载到本地了

这是《红色高跟鞋》的歌曲链接,把链接拿到谷歌浏览器中打开,会出现这样的画面
python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

那么在浏览器中我们能否找到mp3格式的url呢?

事实上是可以的,按下F12,点击播放音乐,这时候网易云会给你传来一系列的数据,找到Network,点击XHR,找到url?csrf,点击Preview,在最后一行我们可以找到一个mp3格式url

这种做法可以同样适用于网页版的QQ音乐,酷狗,酷我等音乐。

python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

但是这个网址并非没有问题,我们可以看到里面夹带着日期,说明这个音乐网址很可能是个临时网址,用个几天说不定就打不开了。

下面是音乐《绅士》的源地址:

这才是我们最想要的网址,另外网易云的音乐源地址都是以http://m2.music.126.net开头的。

怎么获取源地址,请看下一篇文章。

准备
工具:python 3.5,pycharm

类库:requests库

示范歌单
一张轻音乐歌单,一共包含了50首歌曲

python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

导入模块
from urllib.request import urlretrieve
import requests

关于这两个模块的功能用到时会具体介绍,为了方便起见,下面把请求头省略了,
因为比较长,但是放弃它对于功能的实现影响不大。

发送请求

我们用requests.get()来进行网络请求,获取它的响应流文件
(你可以想象成GET在说:喂,网络服务器,请按照这个网址给我信息)

这里要注意了,我们请求的网址其实和歌单图片中的那个网址是不同的,你可以把这里的网址复制到浏览器中看一下,浏览器会显示这样的画面

python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

你有没有发现这里出现了那个让我们众里寻她千百度的'mp3Url'

JSON解析

为什么是json ?json的格式数据是这么写的

网易云API返回给我们的数据是JSON格式。

总结一下
第一行代码:获取到JSON格式的数据
第二行代码:用JSON解析数据

批量下载

1.link = arr[i]['mp3Url']怎么理解?

是不是有50首歌,每首歌都有这样的数据包括:picUrl , img1v1Url, mp3Url
但是我们要的是mp3Url,所以最后link是不是就代表了每首歌的下载链接

2.urlretrieve()两个参数,一个Url,一个是Path,这个函数的功能就是把网链的内容下载到你的本地,你给它picUrl,它就下载图片;你给它mp3Url,它就下载歌曲

3.try,except 用来检测异常,付费歌曲会自动跳过

完整代码
python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客
运行结果

python下载网易云音乐-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客
HTTPX 基础教程-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客