当前位置:网站首页>一篇文章教会你使用Python网络爬虫下载酷狗音乐
一篇文章教会你使用Python网络爬虫下载酷狗音乐
2020-11-06 20:53:00 【Python进阶者】
【一、项目背景】
现在的听歌软件动不动就是各种付费,要下载软件才能听,当你下载了之后,你会惊奇的发现这首歌还收费,这就让一向喜欢白嫖的小编感到很伤心了。于是,小编冥思苦想,终于让我发现了其中的奥秘,一起来看看吧。
【二、项目准备】
1、编辑器:Sublime Text 3
2、软件:360浏览器
【三、项目目标】
下载我们喜欢的音乐。
【四、项目实现】
1、打开酷狗音乐官网
360浏览器打开酷狗音乐官网:
可以看到十分清爽的画风,这也是我比较喜欢的地方。
2、审查元素,分析请求
打开Network ,分析请求,我们可以看到:
从上图可以看出,这是请求的参数,所以我们可以使用Requests模块对它发起请求。
3、模拟发起请求
我们从网页中得知它的地址为:
https://www.kugou.com/yy/html/search.html#searchType=song&searchKeyWord=%E4%B8%8D%E8%B0%93%E4%BE%A0
可以看到真正对于我们来说有用的就只有SearchKeyWord参数后的值,前面的搜索类型默认填写即可,所以我们可以这样:
import requests
headers={
'accept': '*/*',
'accept-encoding':'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'cookie': 'kg_mid=ebb2de813317a791bcf7b7d3131880c4; UM_distinctid=1722ba8b22632d-07ac0227c507a7-4e4c0f20-1fa400-1722ba8b2284a1; kg_dfid=0Q0BEI47P4zf0mHYzV0SYbou; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1590041687,1590280210,1590367138,1590367386; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1590367431',
'referer': 'https://www.kugou.com/yy/html/search.html',
'sec-fetch-mode': 'no-cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
aa=input('请输入歌名:')
data={
'callback': 'jQuery112408716317197794392_1590368232677',
'keyword':aa,
'page': '1',
'pagesize':'30',
'userid':'-1',
'clientver': '',
'platform': 'WebFilter',
'tag': 'em',
'filter': '2',
'iscorrection': '1',
'privilege_filter': '0',
'_': '1590368232679',
}
requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=4)
这样就实现了模拟请求,我们来验证下:
可以看出它成功打印出了和我们上面一模一样的地址。
4、获取音乐文件列表
rep=requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=5)
print(rep.url)
res=requests.get(rep.url,timeout=4)
print(res.text)
当我们将请求地址填写正确后,我发现竟然内容与预期不相符,但是请求地址对的一批。
我以为是这样的结果:
实际上的结果:
可以看到差距很大,而且用Json也根本获取不到,报格式错误,说明不是一个Json,看来这比QQ音乐难度高点。不过我们今天要下载的是音频文件,所以暂时跳过,不管它。
5、下载音频文件
我们在搜索后弹出来的列表中选择原唱曲目,进去听一下:
我选择第一首,打开是这样,我们开始骚操作,打开Network:
我们输入后缀Mp3,然后定位到对应的请求,然后打开它的请求结果,可以看到一个Json结果:
我们将Json结果粘贴到控制台,可以看到里面有一段关于Mp3的结果,不过添加了点干扰符号,我们把它提取出来:
这样我们就可以把酷狗音乐的歌曲下载下来了。
【五、项目总结】
1、其实,酷狗音乐与QQ音乐不同,酷狗音乐的下载链接更好捕获,你可以直接在它的播放界面捕获到:
模拟请求这个界面,一切都搞定了。
2、关于QQ音乐的获取,可以参考之前发布的系列文章:
3、需要本文源码的小伙伴,后台回复“酷狗音乐”四个字,即可获取。 想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/
版权声明
本文为[Python进阶者]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4521128/blog/4666154
边栏推荐
- 嘗試從零開始構建我的商城 (二) :使用JWT保護我們的資訊保安,完善Swagger配置
- I think it is necessary to write a general idempotent component
- EOS创始人BM: UE,UBI,URI有什么区别?
- 一篇文章带你了解HTML表格及其主要属性介绍
- High availability cluster deployment of jumpserver: (6) deployment of SSH agent module Koko and implementation of system service management
- Mac installation hanlp, and win installation and use
- JVM memory area and garbage collection
- How to encapsulate distributed locks more elegantly
- This article will introduce you to jest unit test
- How to use parameters in ES6
猜你喜欢
Brief introduction of TF flags
Thoughts on interview of Ali CCO project team
Network security engineer Demo: the original * * is to get your computer administrator rights! 【***】
How to encapsulate distributed locks more elegantly
熬夜总结了报表自动化、数据可视化和挖掘的要点,和你想的不一样
PN8162 20W PD快充芯片,PD快充充电器方案
[C / C + + 1] clion configuration and running C language
前端基础牢记的一些操作-Github仓库管理
It's so embarrassing, fans broke ten thousand, used for a year!
NLP model Bert: from introduction to mastery (2)
随机推荐
中小微企业选择共享办公室怎么样?
Don't go! Here is a note: picture and text to explain AQS, let's have a look at the source code of AQS (long text)
How long does it take you to work out an object-oriented programming interview question from Ali school?
深度揭祕垃圾回收底層,這次讓你徹底弄懂她
Mac installation hanlp, and win installation and use
Analysis of partial source codes of qthread
“颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询
Process analysis of Python authentication mechanism based on JWT
6.4 viewresolver view parser (in-depth analysis of SSM and project practice)
Synchronous configuration from git to consult with git 2consul
vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证
Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
Grouping operation aligned with specified datum
keras model.compile Loss function and optimizer
ES6学习笔记(四):教你轻松搞懂ES6的新增语法
High availability cluster deployment of jumpserver: (6) deployment of SSH agent module Koko and implementation of system service management
Face to face Manual Chapter 16: explanation and implementation of fair lock of code peasant association lock and reentrantlock
从海外进军中国,Rancher要执容器云市场牛耳 | 爱分析调研
加速「全民直播」洪流,如何攻克延时、卡顿、高并发难题?
ES6 essence: