【附源码】用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、明确需求

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

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%免费】

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

相关推荐
小屁孩大帅-杨一凡27 分钟前
java后端请求想接收多个对象入参的数据
java·开发语言
m0_6569747433 分钟前
C#中的集合类及其使用
开发语言·c#
java1234_小锋34 分钟前
使用 RabbitMQ 有什么好处?
java·开发语言
wjs202443 分钟前
R 数据框
开发语言
肘击鸣的百k路1 小时前
Java 代理模式详解
java·开发语言·代理模式
捕鲸叉1 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
wrx繁星点点1 小时前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式
真的想不出名儿1 小时前
Java基础——反射
java·开发语言
努力编程的阿伟2 小时前
【Java SE语法】抽象类(abstract class)和接口(interface)有什么异同?
java·开发语言
丕羽2 小时前
【Pytorch】基本语法
人工智能·pytorch·python