还在用网易云音乐客户端?out了~

前言

网易云音乐随着互联网时代的来临,优秀的以“大数据”而闻名。自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.(咪哥杂谈)

还在用网易云音乐客户端?out了~相关推荐

  1. node.js+uniapp计算机毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  2. 计算机毕业设计Node.js+Vue安卓仿网易云音乐客户端APP(程序+源码+LW+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  3. Python-Django毕业设计安卓仿网易云音乐客户端APP(程序+LW)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  4. 解锁网易云音乐客户端变灰歌曲

    解锁网易云音乐客户端变灰歌曲 最近周杰伦出新歌了,可是最喜欢的网易云木有版权?为了听歌不得不安装多个音乐播放器?喜欢的歌还要收费开会员?这里安利一个超好用的方法,以上问题通通搞定!在分享之前首先分享原 ...

  5. android 仿网易标签切换,高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹

    1.高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的, 实现方式,自定义AnimTabsView继承 RelativeLa ...

  6. vue-electron制作网易云音乐客户端

    前言 就在两个月前公司需求快速开发一款桌面应用软件,嗯,快速. 并且提供了技术方案Nwjs,起初不知道这款框架的存在,网上查找了一波,发现更牛逼的一款快速搭建桌面应用的框架,那么它就是electron ...

  7. vue实现仿网易云音乐客户端

    快毕业了要做毕设,因为在公司实习的是前端所以选择使用vue实现一个网易云音乐客户端. 主界面 拥有五套主题配色 播放器界面 多人聊天室 拖动网站内对象到此可分享任意内容 歌词滚动使用better-sc ...

  8. Windows解锁网易云音乐客户端变灰歌曲

    变灰歌曲不再有 Windows解锁网易云音乐客户端变灰歌曲 在开启前 我们先打开网易云音乐windows版配置代理服务器 然后返回下载github的项目的地址 解压 在根目录 打开cmd终端命令窗口 ...

  9. 网易云linux字体太小,网易云音乐客户端和百度网盘在Deepin下字体显示太小的解决...

    在Deepin系统默认的的显示分辨率1920*1080下,网易云音乐客户端和百度网盘表现出了字体大小的视觉效果,本文教你变大的方法,以处理网易云音乐客户端为例,同时在百度网盘上也是有效的(参考:用De ...

最新文章

  1. pandas的reindex功能
  2. BeanUtils.copyProperties 需要getset方法支持
  3. python接口测试_Python接口自动化测试(一)
  4. oppoJava面试题,java声明全局变量的关键字
  5. 表主键自增长Mybatis插入数据报错
  6. 【日常水题-bfs】马的遍历
  7. MarkdownPad2
  8. python 实现 画图器_python实现画图工具
  9. 个税系统代理服务器参数是什么,个税系统网络参数设置服务器地址
  10. [RPA之家]UiPath程序设计文档
  11. Raptor码(一):2007RFC5053标准编解码学习
  12. python文本错别字检测
  13. oracle数据错误循环冗余检查,/S-Error: (OS 23) 数据错误(循环冗余检查)
  14. PS176替代方案| DP转HDMI2.0音视频转换芯片CS5263
  15. Android_openCV图片处理
  16. Qt QString 增、删、改、查、格式化等常用方法总结
  17. API文档自动生成的方法
  18. CX51 用户手册----MDU_F120伪指令
  19. 电脑上计算机中的文档怎么变成格子样,电脑有的软件文字显示小方格是怎么回事?怎样解决?...
  20. 【代码质量管理工具】--使用sonarLint提高代码质量

热门文章

  1. python爬虫抓收费图片_简单的抓取淘宝图片的Python爬虫
  2. 转:变种挖矿蠕虫问题解决
  3. ping命令的基本格式
  4. android.os.BatteryManager
  5. 什么是ETL,ETL是什么技术?
  6. java数组下标越界处理_可恶的Java数组下标越界检查
  7. 计算机教师格言座右铭,教师个人格言座右铭集锦
  8. Blender学习记录
  9. 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc
  10. 情报分析-diamond_threat_model