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

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

准备

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类型
'''
相关文章
|
6天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
8天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
26 4
|
7天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据科学:从基础到实战
Python数据科学:从基础到实战
13 1
|
8天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
19 1
|
11天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
25 1
|
11天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
25 1
|
13天前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
本文介绍了 Python 在跨平台开发中的强大能力,通过实际例子展示了如何使用 `os` 和 `pathlib` 模块处理文件系统操作,`subprocess` 模块执行外部命令,以及 `tkinter` 创建跨平台的图形用户界面。这些工具和模块帮助开发者轻松应对不同操作系统间的差异,专注于业务逻辑。
29 2
|
3天前
|
数据采集 存储 数据处理
探索Python中的异步编程:从基础到实战
【10月更文挑战第39天】在编程世界中,时间就是效率的代名词。Python的异步编程特性,如同给程序穿上了一双翅膀,让它们在执行任务时飞得更高、更快。本文将带你领略Python异步编程的魅力,从理解其背后的原理到掌握实际应用的技巧,我们不仅会讨论理论基础,还会通过实际代码示例,展示如何利用这些知识来提升你的程序性能。准备好让你的Python代码“起飞”了吗?让我们开始这场异步编程的旅程!
10 0
|
7天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
12天前
|
开发者 Python
探索Python中的装饰器:从入门到实战
【10月更文挑战第30天】本文将深入浅出地介绍Python中一个强大而有趣的特性——装饰器。我们将通过实际代码示例,一步步揭示装饰器如何简化代码、增强函数功能并保持代码的可读性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往更高效编程的大门。