因为最近发现咪咕音乐版权好多,当时我就在想是不是可以爬取下来,然后花了一些时间,发现有加密,虽然找到了接口,但是只能手动下载VIP歌曲,对于我们学IT的人来说,这是不能忍的,于是就懒得去解密抓取了,但是偶然的情况下,一个朋友说发现酷狗没加密,我兴奋的去看了看,果然,然后大概分析了一下,可以完成我想要抓取的那个程序,好了,废话不多说,上干货

我打包成了exe程序,只要有电脑就可以运行,下载你想要听的歌曲,不过有些版权没有,和未知bug,可能有些歌曲不能下载,毕竟还是有些不足的

GitHub源码地址

https://github.com/18216492945/music_download.git

git@github.com:18216492945/music_download.git

群里面:924776571  也可以下载

群里面都是一群爱学习的大佬,各专业大佬,想学习交流的小伙伴一起来学习吧,让我们赢取白富美,走向人生巅峰

一:我想要的是一个搜索接口,根据自己想要下载的歌曲来抓取数据

打开这个包我们可以得到我们想要的结果,找到了search_url ,我们可以先拿下来,稍后做分析

Request URL:https://songsearch.kugou.com/song_search_v2?callback=jQuery112403044970993079412_1583928714071&keyword=%E5%B9%B4%E5%B0%91%E6%9C%89%E4%B8%BA&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1583928714073
 
这个url里面,经过各种调试,可以得出一些结论,
callback=jQuery112403044970993079412_1583928714071:这一个东西用来提高搜索结果准确度的
keyword=%E5%B9%B4%E5%B0%91%E6%9C%89%E4%B8%BA:这个就是我们搜索框的关键字
page=1:就是第一页
pagesize=30:就是搜索结果返回30条数据
_=1583928714073:这个参数是必须带上的,不然请求会失败
其余的好像去了也可以,也没出什么问题,但是带上也没关系,不会有害处
 
所以我们可以构建自己的search_url,更具关键字自己调就好
 
 
二:构建好search_url后,我们回到播放页

请求url里面有hash,hash基本作为唯一标识,果然,把这个hash换成别的歌曲的hash就跳转到对应的歌曲

然后返回的数据,

lyrics:就是歌词,

play_url:就是歌曲播放源地址

三:接下来就是解析数据,把数据清洗出来就行了,构建play_url 

 我就是这么分析,然后就着手写代码,嗯嗯,没得问题
 
四:然后基本架构就是这样
 

 

 五:运行结果如下

 六:最后,学IT的 ,肯定不会忘记分享,分享程序员圈子的的一大亮点,自己平时也在其中学到知识,现在也该到我来分享分享了

写这篇文章,只是拿来分享,肯定会有一些不足的地方,因为我自己也是学生,小白起步阶段,有什么不足的地方也希望大佬们来指导指导,也希望大家一起相互学习交流

python-从酷狗下载爬取自己想要的音乐-可以直接拿来体验哟的更多相关文章

  1. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  2. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  3. python学习之爬虫(一) ——————爬取网易云歌词

    接触python也有一段时间了,一提到python,可能大部分pythoner都会想到爬虫,没错,今天我们的话题就是爬虫!作为一个小学生,关于爬虫其实本人也只是略懂,怀着"Done is b ...

  4. Python网络爬虫与如何爬取段子的项目实例

    一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...

  5. python爬虫学习01--电子书爬取

    python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...

  6. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  7. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  8. 【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接

    [学习笔记]Python 3.6模拟输入并爬取百度前10页密切相关链接 问题描述 通过模拟网页,实现百度搜索关键词,然后获得网页中链接的文本,与准备的文本进行比较,如果有相似之处则代表相关链接. me ...

  9. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

随机推荐

  1. Multi-batch TMT reveals false positives, batch effects and missing values(解读人:胡丹丹)

    文献名:Multi-batch TMT reveals false positives, batch effects and missing values (多批次TMT定量方法中对假阳性率,批次效应 ...

  2. 如何使用pyenv在windows10安装多个python版本环境

    安装pyenv-win pyenv-win的详细内容可以查看源地址 1.这里我用的是第一种安装方法: pip install pyenv-win --target %USERPROFILE%/.pye ...

  3. 【WebGL】WebGL API 详解

    基于 WebGL Specifications 最全面的API释疑. 类型以及对象定义 这部分内容主要定义一部分类型和数据结构. typedef unsigned long GLenum; typed ...

  4. Happens-before先行发生原则

    简介 从JDK1.5,java使用新的JSR-133内存模型:JSR-133使用happens-before的概念来阐述操作之间的内存可见性:在JMM中,如果一个操作执行的结果需要对另一个操作可见,那 ...

  5. drf认证源码分析

    补充: 一.django中间件之路由斜杠的自动添加源码 其实我们每次在写路由的时候,如果在路由层给他设置的是加/,但实际上我们在浏览器中输入的时候并没有加/发现也能调用,前面说了是浏览器内部走了重定向 ...

  6. Bootstrap 基本配置与应用

    配置使用 下载文件引用 下载方式:Bootstrap官网 https://www.bootcss.com/ 引用 例: <head> <meta charset="utf- ...

  7. springboot使用swagger2创建文档

    一.导入swagger2依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...

  8. go语言系列-从零到数据类型的基本介绍

    视频资源:b站UP主v若水若水的尚硅谷go视频 不动笔墨不读书 ,虽然我有全套视频和笔记 还是自己动点笔墨 因为在19年下半年大致学过go语言 所以这么计划:一个星期拿下基础 一个星期拿下框架 两个星 ...

  9. w3cshool -- 排列组合去重算法挑战

    function permAlone(str) { if(str.length == 1) return str; var a = str.substr(0, 1), one = [a], count ...

  10. Leetcode_239. 滑动窗口最大值

    单调队列模板题,扫描一遍,队尾维护单调性,队头维护不超过大小为k的区间. code class Solution { public: vector<int> maxSlidingWindo ...