【附源码】用Python开发一个音乐下载工具,并打包EXE文件,所有音乐都能搜索下载!

现在听个歌,不是要这就是要那,乱七八糟的,下软件都下不赢。

在这里插入图片描述

于是决定加班熬夜来做一个,想怎么听就怎么听,大家自己看到就好,悄悄用,别告诉别人哈~

在这里插入图片描述

好了不闲聊,开整!

首先我们需要准备这些

环境

Python 3.10
Pycharm

模块

import requests >>> pip install requests   
import parsel >>> pip install parsel  
import prettytable >>> pip install prettytable   
import os  

打包exe程序:

pyinstaller -> pip install pyinstaller 

爬虫实现基本流程

案例分为三部分:

  1. 单首歌曲采集

  2. 搜索下载功能 (单个/批量)

  3. 把py程序打包成exe软件

一、数据来源分析

1、明确需求

明确采集的网站以及数据内容

  • 网址: https://www.gequbao.com/music/402856

  • 数据: 歌曲链接

2.抓包分析

通过浏览器开发者工具分析对应的数据位置

  • 打开开发者工具

  • F12 / 右键点击检查选择network 网络

  • 刷新网页

  • 通过关键字搜索找到对应数据位置

  • 先找歌曲链接地址(播放地址): 开发者工具 -> 网络 -> 媒体 -> 查看对应歌曲链接

  • 再根据链接中一段参数进行搜索

  • 关键字: 需要什么数据就搜什么数据

在这里插入图片描述

数据包地址: https://www.gequbao.com/api/play_url?id=402856&json=1

二、代码实现步骤

1.发送请求

模拟浏览器对于url地址发送请求

# 导入数据请求模块 import requests """发送请求"""  
# 模拟浏览器 (请求头)  
headers = {  
# User-Agent 用户代理, 表示浏览器基本身份信息  
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'  
}  
# 请求网址  
url = 'https://www.gequbao.com/api/play_url?id=402856&json=1' # 发送请求  
response = requests.get(url=url, headers=headers)  
2.获取数据

获取服务器返回响应数据

# 获取响应json数据  
json_data = response.json()  
3.解析数据

提取我们需要的数据内容
css选择器简单使用
根据标签属性提取数据内容

  1. 查看数据对应标签位置
4.保存数据

获取歌曲内容, 保存到本地文件夹

# 对于歌曲链接发送请求, 获取歌曲内容  
music_content = requests.get(url=play_url, headers=headers).content  
# 数据保存  
with open(f'music\\{download_title}-{download_singer}.mp3', mode='wb') as f:  # 写入数据  f.write(music_content)  
print(f'{download_title}歌曲下载完成!')  
5.搜索下载
  1. 找搜索接口
  • 歌名

  • 歌曲ID

  1. 分析不同歌曲, 数据包有什么变化
  • 歌曲变化 -> ID

  • 只要过去所有歌曲ID你就可以采集所有歌曲内容

在这里插入图片描述

效果展示

在这里插入图片描述

6.打包EXE
pyinstaller -F xx.py  

打包成功后,就能分享给其它不会py的小伙伴,愉快的使用了~

资料包也已经打包好了,朋友们如果需要可以威x信扫描下方二维码免费获得【保证100%免费】
在这里插入图片描述

今天的分享就到这,关注小编不迷路~

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

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

相关文章

Element-ui el-table 全局表格排序

实现效果如下&#xff1a; 一、当页数据排序 如果只想要当前页面排序&#xff0c;只会涉及到前端&#xff0c;只需在<el-table-column>标签上添加 :sortable"true"即可 二、自定义排序 如果想要全局排序&#xff0c;需要自定义排序函数&#xff0c;请求后台排…

如何进行大模型训练和微调?(实战)

1、在项目中&#xff0c;如果prompt和function calling足够好&#xff0c;尽量不要微调&#xff0c;节约成本。 以下是针对function calling的slot&#xff0c;评估准确率&#xff08;识别准确度&#xff09;、召回率&#xff08;全面率&#xff09;&#xff0c;F1值。 从中可以…

System.out源码解读——err 和 out 一起用导致的顺序异常Bug

前言 笔者在写一个小 Demo 的过程中&#xff0c;发现了一个奇怪的问题。问题如下&#xff1a; // 当 flagtrue 时打印 a1 &#xff1b;当 flagfalse 时打印 a2。 public static void main(String[] args) {boolean flag false;for (int i 0; i < 10; i) {if (flag) {Sys…

基于python的宠物信息交流系统---附源码74885

摘 要 在当今社会&#xff0c;随着人们生活质量的提高和对精神健康的追求&#xff0c;宠物已经成为我们生活中不可或缺的伙伴。与家中宠物朝夕相处&#xff0c;我们与宠物之间建立了深厚的情感纽带。然而&#xff0c;宠物也有可能生病&#xff0c;需要接受医疗护理。与人类一样…

如何利用Samba跨平台分享Ubuntu文件夹

1.安装Samba 终端输入sudo apt install samba 2.配置Samba 终端输入sudo vim /etc/samba/smb.conf 打开配置文件 滑动文件到最底下 输入以下内容 [Share] # 要共享的文件夹路径 path /home/xxx/sambashare read only no browsable yes编辑完成后按一下Esc按键后输入:wq回…

动不动就下跪的三星,离开天津了

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 三星辉煌岁月已过&#xff0c;万事凋零!如果说IBM、惠普、戴尔、苹果、富士康的离开有点惋惜的话&#xff0c;那三星的离开就是“活该”了。 成立于1993年的天津三星电子有限公司与2024年9月6日注销了&#xff0…

基于JavaWeb开发的java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于JavaWeb开发的java ssm springbootVUE疫情防疫系统系统前后端分离设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取…

MySQL字符集的转换

背景介绍 在使用MySQL过程中&#xff0c;如果字符集配置不当&#xff0c;可能会出现插入失败、数据乱码、 索引失效、数据丢失、查询不到期望结果等一系列使用异常的情况。因此&#xff0c;熟练掌握MySQL字符集和比较规则的配置方法&#xff0c;并在此基础上了解MySQL字符集与…

AMD CMD UMD CommonJs ESM 的历史和区别

这几个东西都是用于定义模块规范的。有些资料会提及到这些概念&#xff0c;不理清楚非常容易困惑。 ESM&#xff08;ES Module&#xff09; 这个实际上我们是最熟悉的&#xff0c;就是ES6的模块功能。出的最晚&#xff0c;因为是官方出品&#xff0c;所以大势所趋&#xff0c…

股价跌破1美元!这家激光雷达上市公司被沃尔沃「拖进」ICU

作为目前前装上车成本最高的传感器之一&#xff0c;绝大部分激光雷达初创公司的表现&#xff0c;令人沮丧。“很多时候&#xff0c;前方似乎有一个美好的未来&#xff0c;但事情并不总是按照预期发展。” 比如&#xff0c;作为曾经美股市值最高&#xff08;曾经巅峰期高达120亿…

【kafka-02】kafka集群搭建

Kafka系列整体栏目 内容链接地址【一】afka安装和基本核心概念https://zhenghuisheng.blog.csdn.net/article/details/142213307【二】kafka集群搭建https://zhenghuisheng.blog.csdn.net/article/details/142253288 kafka集群搭建 一&#xff0c;kafka集群搭建1&#xff0c;ka…

C++——深部解析哈希

好久不见给大家分享一张图片吧 目录 前言 二、库文件 1、哈希冲突 2 哈希函数 3、闭散列 三 、闭散列的实现和底层逻辑 1、哈希表&#xff08;闭散列&#xff09;的定义 2、哈希表&#xff08;闭散列&#xff09;的插入 3、哈希表&#xff08;闭散列&#xff09;的查找 4.哈希表…

灵雀云DevOps:加速应用交付,点燃业务创新引擎

导语 近日&#xff0c;国际知名咨询机构Gartner发布了2024年度DevOps平台魔力象限报告&#xff08;Gartner Magic Quadrant for DevOps Platforms&#xff09;&#xff0c;为信息化决策者在技术战略层面提供了选型和评估DevOps平台供应商的全面视角。报告中&#xff0c;中国云…

MYSQL数据库——MYSQL管理

MYSQL数据库安装完成后&#xff0c;自带四个数据库&#xff0c;具体作用如下&#xff1a; 常用工具 1.mysql 不是指mysql服务&#xff0c;而是指mysql的客户端工具 例如&#xff1a; 2.mysqladmin 这是一个执行管理操作的客户端程序&#xff0c;可以用它来检查服务器的配置和…

DeviceNet网关HT3S-DNS-MDN读取七星华创CS310空气流量计数据应用案例

七星华创流量计CS310系列 (MODBUS RTU) 通过DeviceNet网关HT3S-DNS-MDN 与台达DVP系列的PLC进行交换数据应用案例 一、概述 本文主要介绍使用HI-TOP网关 HT3S-DNS-MDN在台达DVP系列 PLC和七星华创CS310流量计之间进行数据交换。 解决的问题&#xff1a;台达DVP系列如何通过…

pdf怎么压缩的小一点?4个方法帮你一键压缩

pdf怎么压缩的小一点&#xff1f;将PDF文件压缩得更小&#xff0c;不仅可以显著节省存储空间&#xff0c;还能加快文件在网络中的传输速度&#xff0c;让分享与备份变得更加便捷。特别是在处理大型文档或包含高分辨率图像的PDF时&#xff0c;压缩功能尤为重要。通过选择适合的压…

运维人员转行 AI 大模型全攻略:史上最详尽总结,一篇在手,转行无忧!

前言 做运维的苦&#xff0c;谁做谁懂。有时候真感觉自己就像个杂役&#xff0c;在公司都快成修电脑的了。不装了&#xff0c;我要转行&#xff01;在此给大家分享点经验&#xff0c;希望能帮到你们。 运维工程师若要转行至大模型领域&#xff0c;需要学习一系列全新的技能与…

解决RabbitMQ设置TTL过期后不进入死信队列

解决RabbitMQ设置TTL过期后不进入死信队列 问题发现问题解决方法一&#xff1a;只监听死信队列&#xff0c;在死信队列里面处理业务逻辑方法二&#xff1a;改为自动确认模式 问题发现 最近再学习RabbitMQ过程中&#xff0c;看到关于死信队列内容&#xff1a; 来自队列的消息可…

Google Dorks 发现隐藏的端点和参数

“作为一名漏洞赏金猎人&#xff0c;您的主要任务之一是绘制目标的攻击面&#xff0c;包括发现隐藏的参数和端点。这些可能会打开更深层次漏洞的大门&#xff0c;导致您可能未修补的 API 调用、未受保护的功能&#xff0c;甚至管理员级别的访问权限。Google Dorking 是一种非常…

AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

一、引言 贫富差距的产生是信息差&#xff0c;技术贫富差距的产生亦如此。如果可以自我发现或者在别人的指导下发现优秀的开源项目&#xff0c;学习或工作效率真的可以事半功倍。 今天力荐的项目是LLaMA-Factory&#xff0c;我在去年8月份就开始使用这个项目进行模型部署和微…