前言
网易云音乐随着互联网时代的来临,优秀的以“大数据”而闻名。自2016年以后,越来越多人接受了这款优秀的音乐网站 or app,因良好的用户体验感而出名,例如歌单这个功能,仅有你想不到的,无用户共享、上传歌单做不到的!什么张雨生合集呀,什么动漫名曲。。。等
针对歌单这项功能来讲,应该是许多网易云用户最喜欢的功能之一,毕竟整合了许多符合自己口味的歌曲在一块,省时又省力。但亦同期面临着一个问题,即下载!
假如你的电脑上装了网易云音乐的客户端,那样还好说,例如下面这般,你能够一键下载:
当然,亦不排除有些伴侣不爱好这么麻烦,还要装个客户端。。。例如我,能不装电脑上的软件,绝对不会装!因此浏览器听歌成为了首选,局限性便是倘若无网,那样浏览器这条路就走不通了!
因此今天,咱们就用爬虫的方式来实现一下,怎样用 Python 下载歌单下的所有歌曲!顺便认识下爬虫下载音乐的原理机制。亦许下载网易云音乐的文案满大街都是,但详细实现思路,笔者觉得应该一人一个样,不妨耐心的看下去,说欠好有意外收获!
PS:本文目的是抱以学习心理而分享,禁止用于违法以及商场途径,如有危害,一切后果自己承担!
成果演示
依然是先看成果,有了成果,才可勾起你的兴趣,看了成果还提不起兴趣的,那确实便是没兴趣了,亦不消在往下看了!走着客官,上图~
爬取以及设计思路
1. 找下载歌曲的外链(对外链接,简叫作外链)位置
既然重点功能是下载,那样肯定是需要找到对应下载音乐的位置的,倘若单从网易云主页分析,还要破解 js 加密什么的,实在麻烦,不妨换一种思路!多多利用搜索引擎,经查找,发掘网易云供给了一个对外下载歌曲的位置,只需要晓得歌曲id,就可运用位置加id形式打开网页进行播放,位置如下: # 只需要将歌曲 id 传给此网页,直接打开就可播放!
http://music.163.com/song/media/outer/url?id=xxxxx.mp3来试试,"金鱼邓紫棋"的这首歌,翻唱龙卷风,id=28427775:
把id替换到上面给出的外链中,打开后,网址自动转,将url加密了,同期自动播放:
2. 分析歌单下各歌曲关键信息
有了下载位置后一切都变得简单了,只需要做的是,获取你喜欢的歌单位置,而后将此歌单下所有歌曲id进行爬取!还记得爬取的过程吗?
首要要知道自己想要的信息,而笔者这儿想要的信息就三个:歌单名叫作、歌曲名叫作、歌曲id。
那样接下来就对网页分析下相应的节点。
歌单名叫作,看不清楚手机能够点开放大看,以下照片均可:
歌曲名叫作:
歌曲id:
3. 爬取歌单下所有歌曲的id,同期传入外链位置,进行下载
有了以上分析后,只需要验证下,咱们用 Python 模拟请求,拜访此网页时,返回的信息与咱们F12分析后的结果是不是一致。是不是真的存在F12看到的信息节点呢?
网页位置:
此处运用 requests 库模拟发送请求,得到返回的数据,代码是这般的: import requests
headers = {
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/69.0.3497.100 Safari/537.36
}
url = "https://music.163.com/#/playlist?id=2722916074"
r = requests.get(url=url,headers=headers)
print(r.text)用上面这段代码,你请求后返回的内容,会惊奇的发掘,怎么找亦找不到与F12看到的类似节点内容!为何呢?猜测是由于网易云做了一层位置上的反爬机制,隐匿了真正的歌单网页。
打开F12,再来找下请求:
经查询,确实隐匿了真实位置,此刻浏览器上看到的 url 多了一个#,因此当咱们请求图中 3 的位置时,便是返回的与F12看到的节点信息一致。
思考与动手
本篇文案,大致的思路已然带大众梳理清楚了,接下来便是动手了!笔者这次不打算将自己写的代码放出来,大众对学习爬虫感兴趣的,不妨自己动手写下程序试试。
思路有了,剩下的便是编程实战了!算是给大众留个小作业,有时间有兴趣的,能够评论区留言提问。写完的朋友,能够自己动手验证下,是不是能将音乐下载到本地,此次案例是一个不错的练手小项目!
下一期,笔者会写一篇讲解自己是怎样设计代码的,顺便在把代码开源出来,敬请期待!
PS:文案首发公众号哟,感兴趣的欢迎关注:migezatan.(咪哥杂谈)
|