Python实战项目2——自动获取酷狗音乐工具

news2024/9/22 17:16:48

在这里插入图片描述

🤵‍♂️ 个人主页@老虎也淘气 个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注

今天分享pyhton第二个实战项目——自动获取酷狗音乐

准备

win11
pycharm
Edge浏览器

有了第一个自动获取小说工具项目的经历,今天这个会容易许多。不清楚第一个项目的可以这里去阅读Python实战项目1——自动获取小说工具

开始

首先打开浏览器,搜素酷狗音乐。
在这里插入图片描述
接下来我们搜索一首歌,以一首《大鱼》为例,大家根据需求,喜欢什么直接搜索即可。
在这里插入图片描述

此时相关的音乐列表全部出现,但是现在并没有音乐。接下来点击播放按钮
在这里插入图片描述
此时这个页面就是我们要爬取的页面,找出URL即可。
右键检查——网络
在这里插入图片描述
进入这个界面,这个什么意思呢,它表示的是,当我们访问这个页面需要加载的资源。点击此处清空一下,然后刷新,重新加载页面资源。
在这里插入图片描述
快速定位音乐位置我们直接点击媒体。正如箭头2所指:就是当前页面我们播放的音乐了。
在这里插入图片描述
在这里插入图片描述
这就是我们要找的URL地址了。选中它复制,然后打开新的浏览器标签,粘贴,回车。出现以下页面说明我们成功找到。
在这里插入图片描述
下面开始在pycharm中编写准备代码。必不可少我们依旧需要伪装自己,不会伪装的去看上一篇文章,这里不做介绍。

# pip install requests 
import requests # 发送请求的用的模块
import json
# 音乐的url地址
info_url ='https://webfs.ali.kugou.com/202301191042/ca350e32a861fbe454257eefafab9989/part/0/960111/KGTX/CLTX001/clip_bfbdd3df47727b701d4480ea36a8f73b.mp3'
# 伪装自己
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
# 发送请求到服务器,获取音乐资源
m_resp = requests.get(m_url,headers=headers)
# 服务器回应的数据--保存数据
with open('zzz.mp3','wb') as f:
    f.write(m_resp.content)

在这里插入图片描述
运行即可下载我们的资源,做到这里肯定有人疑问。我们完全可以直接点击下载,然后还费气力写十几行代码,你是不是闲的,但是如果我们只是为了获取一首歌,这确实是大材小用了。
在这里插入图片描述
所以我们写代码的优势是把列表的所有音乐都下载下来,包括vip歌曲通通实现批量下载。
再次我们来到网站发现找不到MP3的URL,很明显对方进行了反爬技术,没关系我们直接搜索MP3,然后依次点击下图
在这里插入图片描述
点击标头,我们可以获取音乐播放地址。选中它复制,然后打开新的浏览器标签,粘贴,回车。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后一行就是我们要获取的mp3地址

# 音乐信息的url
info_url =f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery19105573930103029792_1674098129306&dfid=4FIPhF1c46Ak3cUQAZ1aB0Bg&appid=1014&mid=6ba6257adf26ea14512f51070a2a135e&platid=4&encode_album_audio_id=n0800ae&_=1674098129307'

在这里插入图片描述
找到hash值,然后在列表页右键检查——搜素hash值
在这里插入图片描述
在这里插入图片描述
此时我们就获取一个音乐列表。此时基本完成。完整代码如下所示:

# pip install requests 
import requests # 发送请求的用的模块
import json
# 伪装自己
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
# 音乐列表
list_url ='https://complexsearch.kugou.com/v2/search/song?callback=callback123&keyword=%E5%A4%A7%E9%B1%BC&page=1&pagesize=30&bitrate=0&isfuzzy=0&tag=em&inputtype=0&platform=WebFilter&userid=-1&clientver=2000&iscorrection=1&privilege_filter=0&srcappid=2919&clienttime=1599051318654&mid=1599051318654&uuid=1599051318654&dfid=-&signature=1FED2963D7BF17379D7B50F558C23A4E'
list_resp = requests.get(list_url,headers=headers)
song_list = json.loads(list_resp.text[12:-2])['data']['lists']
for i, s in enumerate(song_list):
    print(f'{i+1}----{s.get("SongName")}----{s.get("FileHash")}')

num = input('请输入要下载第几首音乐:')
# 音乐信息的url
info_url =f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={song_list[int(num)-1].get("FileHash")}'
# 
headers2={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
    'Cookie':'kg_mid=a256175cc199d208f8ddb5e3caa0f041; kg_dfid=0QqwxT4aMAGF0vizqf0lYbwW; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1598948948,1599049820; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1599051319'
}
info_resp = requests.get(info_url,headers=headers2)
# 音乐的url地址
m_url = info_resp.json()['data']['play_url']
# 发送请求到服务器,获取音乐资源
m_resp = requests.get(m_url,headers=headers)
# 服务器回应的数据--保存数据
with open('zzz.mp3','wb') as f:
    f.write(m_resp.content)



'''
服务器响应的数据结果  
.text 代表访问的数据是文字  
.content代表访问的数据是多媒体文件(图片,音乐,视频,文件) 
.json() 访问的文字是json类型
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vueJs中readonly与shallowReadonly函数的使用比较

01readonly()函数让一个响应式数据变为只读的,接收一个响应式数据,经过readonly加工处理一下,那么新赋值的数据都不允许修改接受一个对象 (不论是响应式还是普通的) 或是一个 ref,返回一个原值的只读代理页面没有更新有两种情况[1]. 数据修改了,但数据不是响应式,vu…

自主可控!万应低代码通过华为鲲鹏、麒麟等多项国产化认证及国家信息安全等级保护三级备案证明

01 万应低代码通过信息系统安全等级保护三级备案证明 凭借过硬的技术能力及完善的信息安全管理体系,万应低代码顺利通过“信息系统安全等级保护三级测评”(简称:等保三级),正式获得由公安部核准颁发的“信息系统安全等…

Probabilistic Volumetric Fusion for Dense Monocular SLAM

论文标题:Probabilistic Volumetric Fusion for Dense Monocular SLAM 论文链接:https://arxiv.org/pdf/2210.01276.pdf 论文思想 提出了一种新的方法,通过利用深度密集的单眼SLAM和快速不确定性传播,从图像中重建三维场景 所提…

Vue如何高效通过JSX动态渲染组件

一、明确需求 如何渲染动态组件呢? 有一组数组结构如下: const arr [ { tag: van-field },// 输入框{ tag: van-cell }, // 弹出层{ tag: van-stepper } // 步进器 ] 想通过循环arr,拿到tag渲染对应的组件。 下面我们分析如何写才是最优。…

高校数据可视化(智慧校园)

教育数据可视化大屏有哪些内容? 教育数据可视化大屏能够展示和分析很多数据,比如:在校生数据分析、招生数据分析、就业数据分析、教职工数据分析,科研数据分析等综合数据分析。 跟传统的教学不同,现代教育对效果的要求…

03.字符函数和字符串函数

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 1. 函数介绍 1.1 strlen size_t strlen ( const char * str ); ✳字符串以 \0 作…

python虚拟机集锦(2)-垃圾收集算法(2)

目录识别参考循环为什么移动无法访问的对象更好正在销毁无法访问的对象优化:世代收集最古老的一代识别参考循环 当GC启动时,它在第一个链接列表中拥有所有要扫描的容器对象。目标是移动所有无法到达的对象。由于大多数对象都是可访问的,因此…

【回首2022,展望2023,兔年你好!】

兔年到,新年好!提前祝各位程序猿新年好!新的一年,意味着新的开始。回顾2022,我学习从0基础萌新,蜕变成学习完c语言,有了基础代码能力的新手。从第一个printf出来hello world,打印到屏…

jpg图片损坏怎么修复?可以试试这个方法

生活中,相信不少小伙伴在使用电脑或手机时,难免会遇到这样的问题,就是保存的图片损坏了,看不到图像了。在出现图像损坏后,我们经常问自己的第一个问题是,有什么办法可以修复它们,之前小编也是遇…

回收租赁商城系统功能拆解11讲-会员分组

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

MySQL监控(三):Grafana入门

1.官方文档 Grafana 安装包下载地址 基于Prometheus、Grafana的可视化监控实践 grafana安装部署、自定义主题、dashboard模板导入 Grafana Dashboard下载 2.安装 我是通过压缩包的方式安装的,官网也有给出yum的安装方式。 wget https://dl.grafana.com/enterpri…

【Javascript】面向对象编程,this,原型与原型链,类与实例,class,Maps

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录对象中的方法/thisthis使用bind函数原型原型链类与实例classclass语法补充Map对象中的方法/this …

【设计模式】结构型模式·代理模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一.概念 由于某些原因访问对象不适合或者不能直接引用目标对象,这时可以为目标对象…

可视化VIT中的注意力

2022年, Vision Transformer (ViT)成为卷积神经网络(cnn)的有力竞争对手,卷积神经网络目前是计算机视觉领域的最先进技术,广泛应用于许多图像识别应用。在计算效率和精度方面,ViT模型超过了目前最先进的(CNN)几乎四倍。 ViT是如何…

【C++】面向对象---多态(万字详解)

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️文章专栏:✈️小林的C之路       🛰️欢迎关注:&#x1f44d…

SIMD性能优化

文章目录前言MMXSSEAVX使用内置函数使用SSE/AVX命名规则SSE/AVX操作类别实战汇编使用优化前代码详解优化后代码详解引用文章#mermaid-svg-sNu7iEVk2jpyjjtX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#fff;}#mermaid-svg-sNu7iEVk2…

【黑马学成在线2023版】解决P7创建父工程时Maven的pom文件依赖爆红问题(亲测有效)

本期目录问题描述解决方案问题描述 感谢黑马贡献的高质量视频教程《学成在线》微服务项目。笔者在学到《P7-创建父工程基础工程》时&#xff0c;直接粘贴黑马老师的 pom 文件中的依赖会出现依赖的 <artifactId> 和 <version> 爆红&#xff0c;显示无法找到依赖的错…

vite学习笔记

vite 1.vite是什么&#xff1f; 基于ES-Module的前端构建工具 2.为什么选择vite&#xff1f; 在浏览器支持 ES 模块之前&#xff0c;JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。 缓慢的服务器启动 当冷启动开发服务器时&#xff0c;基于打包器的方式…

YOLOv8来啦!YOLO内卷期模型怎么选?9+款AI硬件如何快速部署?深度解析

在这新春佳节到来之际&#xff0c;回顾整个虎年&#xff0c;堪称YOLO内卷元年&#xff0c;各路YOLO系列神仙打架&#xff0c;各显神通。一开始大部分用户做项目做实验还是使用的YOLOv5&#xff0c;然后YOLOv6、YOLOv7、PP-YOLOE、DAMO-YOLO、RTMDet就接踵而至&#xff0c;于是就…

SpringBoot原理解析

目录 一、Profile功能 &#xff08;一&#xff09;、application-profile功能 &#xff08;二&#xff09;、Profile条件装配功能 &#xff08;三&#xff09;、profile分组 二、外部化配置 &#xff08;一&#xff09;、外部配置源 &#xff08;二&#xff09;、配置文…