还在用网易云音乐客户端?out了~
还在用网易云音乐客户端?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了~相关推荐
- node.js+uniapp计算机毕业设计安卓仿网易云音乐客户端APP(程序+APP+LW)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 计算机毕业设计Node.js+Vue安卓仿网易云音乐客户端APP(程序+源码+LW+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- Python-Django毕业设计安卓仿网易云音乐客户端APP(程序+LW)
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 解锁网易云音乐客户端变灰歌曲
解锁网易云音乐客户端变灰歌曲 最近周杰伦出新歌了,可是最喜欢的网易云木有版权?为了听歌不得不安装多个音乐播放器?喜欢的歌还要收费开会员?这里安利一个超好用的方法,以上问题通通搞定!在分享之前首先分享原 ...
- android 仿网易标签切换,高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹
1.高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的, 实现方式,自定义AnimTabsView继承 RelativeLa ...
- vue-electron制作网易云音乐客户端
前言 就在两个月前公司需求快速开发一款桌面应用软件,嗯,快速. 并且提供了技术方案Nwjs,起初不知道这款框架的存在,网上查找了一波,发现更牛逼的一款快速搭建桌面应用的框架,那么它就是electron ...
- vue实现仿网易云音乐客户端
快毕业了要做毕设,因为在公司实习的是前端所以选择使用vue实现一个网易云音乐客户端. 主界面 拥有五套主题配色 播放器界面 多人聊天室 拖动网站内对象到此可分享任意内容 歌词滚动使用better-sc ...
- Windows解锁网易云音乐客户端变灰歌曲
变灰歌曲不再有 Windows解锁网易云音乐客户端变灰歌曲 在开启前 我们先打开网易云音乐windows版配置代理服务器 然后返回下载github的项目的地址 解压 在根目录 打开cmd终端命令窗口 ...
- 网易云linux字体太小,网易云音乐客户端和百度网盘在Deepin下字体显示太小的解决...
在Deepin系统默认的的显示分辨率1920*1080下,网易云音乐客户端和百度网盘表现出了字体大小的视觉效果,本文教你变大的方法,以处理网易云音乐客户端为例,同时在百度网盘上也是有效的(参考:用De ...
最新文章
- pandas的reindex功能
- BeanUtils.copyProperties 需要getset方法支持
- python接口测试_Python接口自动化测试(一)
- oppoJava面试题,java声明全局变量的关键字
- 表主键自增长Mybatis插入数据报错
- 【日常水题-bfs】马的遍历
- MarkdownPad2
- python 实现 画图器_python实现画图工具
- 个税系统代理服务器参数是什么,个税系统网络参数设置服务器地址
- [RPA之家]UiPath程序设计文档
- Raptor码(一):2007RFC5053标准编解码学习
- python文本错别字检测
- oracle数据错误循环冗余检查,/S-Error: (OS 23) 数据错误(循环冗余检查)
- PS176替代方案| DP转HDMI2.0音视频转换芯片CS5263
- Android_openCV图片处理
- Qt QString 增、删、改、查、格式化等常用方法总结
- API文档自动生成的方法
- CX51 用户手册----MDU_F120伪指令
- 电脑上计算机中的文档怎么变成格子样,电脑有的软件文字显示小方格是怎么回事?怎样解决?...
- 【代码质量管理工具】--使用sonarLint提高代码质量
热门文章
- python爬虫抓收费图片_简单的抓取淘宝图片的Python爬虫
- 转:变种挖矿蠕虫问题解决
- ping命令的基本格式
- android.os.BatteryManager
- 什么是ETL,ETL是什么技术?
- java数组下标越界处理_可恶的Java数组下标越界检查
- 计算机教师格言座右铭,教师个人格言座右铭集锦
- Blender学习记录
- 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc
- 情报分析-diamond_threat_model