请问有没有爬取优质音乐Mp3的代码示例?
请问有没有爬取优质音乐Mp3的代码示例? 当然可以,以下是一个简单的示例代码,用于爬取网易云音乐上的优质音乐Mp3:import requests
from bs4 import BeautifulSoup
# 定义要爬取的页面链接
url = 'https://music.163.com/discover/toplist?id=3779629'
# 发送HTTP GET请求获取页面内容
response = requests.get(url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到包含音乐链接的标签
songs = soup.find_all('a', {'class': 'ico u-icn-3'})
# 遍历每个音乐链接
for song in songs:
# 提取音乐链接和歌曲名称
href = song['href']
name = song['title']
# 构造完整的音乐链接
mp3_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 保存音乐文件到本地
with open(name + '.mp3', 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
请注意,这只是一个简单的示例,具体的实现方式会因网站结构和反爬措施的不同而有所差异。在实际使用中,你可能还需要考虑一些其他问题,例如如何处理异常、如何设置请求头等。此外,爬取音乐文件需要遵守版权法律法规,确保不侵犯他人的版权。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:46
当然可以,以下是一个简单的示例代码,用于爬取网易云音乐上的优质音乐Mp3:
能不能写成爬取指定歌名的代码? 凊风 发表于 2024-05-01 06:47
能不能写成爬取指定歌名的代码?
当然可以!以下是一个示例代码,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3:
import requests
from bs4 import BeautifulSoup
# 定义要搜索的歌曲名称
song_name = input("请输入要搜索的歌曲名称:")
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['data-res-url']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 保存音乐文件到本地
with open(name + '.mp3', 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
请注意,这只是一个简单的示例,具体的实现方式会因网站结构和反爬措施的不同而有所差异。在实际使用中,你可能还需要考虑一些其他问题,例如如何处理异常、如何设置请求头等。此外,爬取音乐文件需要遵守版权法律法规,确保不侵犯他人的版权。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:47
当然可以!以下是一个示例代码,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3:
能不能指定保存路径到E:\Temp?
凊风 发表于 2024-05-01 06:51
能不能指定保存路径到E:\Temp?
当然可以!以下是稍作修改的示例代码,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3,并保存到E:\Temp路径下:
import requests
from bs4 import BeautifulSoup
import os
# 定义要搜索的歌曲名称
song_name = input("请输入要搜索的歌曲名称:")
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['href']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 构造保存路径
save_path = 'E:\\Temp\\'
mp3_file = os.path.join(save_path, name + '.mp3')
# 保存音乐文件到指定路径
with open(mp3_file, 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
在上述代码中,我们通过修改`save_path`变量来指定保存路径为E:\Temp。请确保该路径存在并有写入权限。如果路径不存在,可以提前创建好或者通过代码逻辑进行处理。
希望对你有帮助!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:51
当然可以!以下是稍作修改的示例代码,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3,并保存到E:\ ...
回复请注意Python格式 凊风 发表于 2024-05-01 06:52
回复请注意Python格式
非常抱歉,下面是修正后的Python代码示例,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3,并保存到E:\Temp路径下:
import requests
from bs4 import BeautifulSoup
import os
# 定义要搜索的歌曲名称
song_name = input("请输入要搜索的歌曲名称:")
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['data-res-url']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 构造保存路径
save_path = r'E:\Temp'
mp3_file = os.path.join(save_path, name + '.mp3')
# 保存音乐文件到指定路径
with open(mp3_file, 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
在上述代码中,我们通过修改`save_path`变量来指定保存路径为E:\Temp。请确保该路径存在并有写入权限。如果路径不存在,可以提前创建好或者通过代码逻辑进行处理。
希望对你有帮助!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:53
非常抱歉,下面是修正后的Python代码示例,用于根据指定的歌名爬取网易云音乐上的优质音乐Mp3,并保存 ...
报错:
请输入要搜索的歌曲名称:my love
Traceback (most recent call last):
File "D:\Python\pythonProject\Music.py", line 22, in <module>
href = song['href']
~~~~^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
凊风 发表于 2024-05-01 06:54
报错:
请输入要搜索的歌曲名称:my love
Traceba ...
非常抱歉给你带来困扰。这个错误是由于在搜索页面中未找到任何歌曲导致的。为了解决这个问题,我们可以先检查是否成功找到了歌曲链接,如果没有则给出相应的提示。
下面是修改后的代码示例:
import requests
from bs4 import BeautifulSoup
import os
# 定义要搜索的歌曲名称
song_name = input("请输入要搜索的歌曲名称:")
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 如果没有找到歌曲链接,则给出提示并退出程序
if song is None:
print(f"未找到歌曲:{song_name}")
exit()
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['href']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 构造保存路径
save_path = r'E:\Temp'
mp3_file = os.path.join(save_path, name + '.mp3')
# 保存音乐文件到指定路径
with open(mp3_file, 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
此代码在找不到歌曲链接时会给出提示并退出程序,不会再发生TypeError的错误。希望这次能够解决问题。如果还有其他疑问,请随时提出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:54
非常抱歉给你带来困扰。这个错误是由于在搜索页面中未找到任何歌曲导致的。为了解决这个问题,我们可以 ...
能不能写成Pyside6 界面样式? 凊风 发表于 2024-05-01 06:55
能不能写成Pyside6 界面样式?
当然可以!以下是一个使用PySide6创建界面,并实现音乐下载的示例代码:
import os
import requests
from bs4 import BeautifulSoup
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QLineEdit, QPushButton, QMessageBox, QFileDialog
class MusicDownloader(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("音乐下载器")
# 创建界面组件
self.search_label = QLabel("请输入要搜索的歌曲名称:")
self.search_input = QLineEdit()
self.download_button = QPushButton("下载")
# 布局
layout = QVBoxLayout()
layout.addWidget(self.search_label)
layout.addWidget(self.search_input)
layout.addWidget(self.download_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.download_button.clicked.connect(self.download_music)
def download_music(self):
# 获取输入的歌曲名称
song_name = self.search_input.text()
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 如果没有找到歌曲链接,则弹出错误提示框
if song is None:
QMessageBox.critical(self, "错误", f"未找到歌曲:{song_name}")
return
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['href']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 弹出保存文件对话框,选择保存路径
save_path, _ = QFileDialog.getSaveFileName(self, "保存音乐", name + ".mp3", "MP3 Files (*.mp3)")
# 如果用户取消保存,则返回
if not save_path:
return
# 保存音乐文件到指定路径
with open(save_path, 'wb') as f:
f.write(mp3_response.content)
QMessageBox.information(self, "成功", f"音乐下载完成")
if __name__ == "__main__":
app = QApplication([])
window = MusicDownloader()
window.show()
app.exec()
这个示例代码创建了一个简单的界面,包括一个输入框、一个下载按钮。用户可以在输入框中输入歌曲名称,点击下载按钮即可下载对应的音乐文件。同时,还通过对话框提供了保存文件的选择路径功能。
请注意,由于PySide6需要安装并运行QT相关的库,可以使用pip进行安装:
pip install pyside6
希望对你有帮助!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:56
当然可以!以下是一个使用PySide6创建界面,并实现音乐下载的示例代码:
麻烦指定保存路径为E:\Temp 凊风 发表于 2024-05-01 06:57
麻烦指定保存路径为E:\Temp
非常抱歉,我之前的代码中没有指定保存路径为E:\Temp。下面是修改后的代码示例,使用 PySide6 创建界面,并实现音乐下载并保存到 E:\Temp 目录的功能:
import os
import requests
from bs4 import BeautifulSoup
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QLineEdit, QPushButton, QMessageBox, QFileDialog
class MusicDownloader(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("音乐下载器")
# 创建界面组件
self.search_label = QLabel("请输入要搜索的歌曲名称:")
self.search_input = QLineEdit()
self.download_button = QPushButton("下载")
# 布局
layout = QVBoxLayout()
layout.addWidget(self.search_label)
layout.addWidget(self.search_input)
layout.addWidget(self.download_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.download_button.clicked.connect(self.download_music)
def download_music(self):
# 获取输入的歌曲名称
song_name = self.search_input.text()
# 构造搜索链接
search_url = f'https://music.163.com/#/search/m/?s={song_name}&type=1'
# 发送HTTP GET请求获取搜索页面内容
response = requests.get(search_url)
html = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')
# 找到搜索结果中的第一个歌曲链接
song = soup.find('a', {'class': 'tit'})
# 如果没有找到歌曲链接,则弹出错误提示框
if song is None:
QMessageBox.critical(self, "错误", f"未找到歌曲:{song_name}")
return
# 提取歌曲链接和歌曲名称
href = song['href']
name = song.text
# 构造完整的歌曲链接
song_url = 'https://music.163.com' + href
# 发送HTTP GET请求获取歌曲页面内容
song_response = requests.get(song_url)
song_html = song_response.text
# 使用BeautifulSoup解析歌曲页面
song_soup = BeautifulSoup(song_html, 'html.parser')
# 找到包含音乐链接的标签
music = song_soup.find('a', {'class': 'u-btni u-btni-addply f-fl'})
# 提取音乐链接
mp3_url = music['data-res-url']
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 弹出保存文件对话框,选择保存路径
save_path = QFileDialog.getSaveFileName(self, '保存音乐', os.path.join('E:', 'Temp', f'{name}.mp3'), 'MP3 Files (*.mp3)')
# 如果用户取消保存,则返回
if not save_path:
return
# 保存音乐文件到指定路径
with open(save_path, 'wb') as f:
f.write(mp3_response.content)
QMessageBox.information(self, "成功", f"音乐下载完成")
if __name__ == "__main__":
app = QApplication()
window = MusicDownloader()
window.show()
app.exec()
在该代码中,使用 `os.path.join()` 函数构造了保存路径为 E:\Temp\ 的绝对路径。同时,使用 `QFileDialog.getSaveFileName()` 弹出文件保存对话框,方便用户选择保存路径和文件名。
希望这次能够满足你的需求!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 06:57
非常抱歉,我之前的代码中没有指定保存路径为E:\Temp。下面是修改后的代码示例,使用 PySide6 创建界面 ...
我手工搜到的歌曲网址是:https://music.163.com/#/song?id=2080607,请问代码要如何修改才能爬取? 凊风 发表于 2024-05-01 07:03
我手工搜到的歌曲网址是:https://music.163.com/#/so ...
如果你已经手动获取了歌曲的具体网址,例如 "https://music.163.com/#/song?id=2080607",那么可以按照以下方式修改代码来实现爬取音乐文件:
import requests
# 定义音乐网址
url = 'https://music.163.com/song?id=2080607'
# 获取音乐文件的地址
response = requests.get(url)
html = response.text
# 提取音乐文件的URL
start_pos = html.find('http', html.find('"src":"'))# 找到音乐文件URL的起始位置
end_pos = html.find('"', start_pos)# 找到音乐文件URL的结束位置
mp3_url = html# 提取音乐文件的URL
# 发送HTTP GET请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 保存音乐文件到本地
with open('music.mp3', 'wb') as f:
f.write(mp3_response.content)
print('音乐下载完成')
在上述代码中,我们通过发送 GET 请求来获取指定网址的页面内容,然后从页面内容中提取出音乐文件的 URL。接着,我们再次发送 GET 请求,从该 URL 获取音乐文件的内容,并将其保存到本地。
请注意,该示例代码仅适用于特定的音乐网址结构,不适用于其他情况。如果目标网站结构有所变化,代码可能需要进行相应的调整。
希望对你有所帮助!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 07:03
如果你已经手动获取了歌曲的具体网址,例如 "https://music.163.com/#/song?id=2080607",那么可以按照 ...
麻烦写成Pyside6界面,然后指定存储路径为E:\Temp 凊风 发表于 2024-05-01 07:04
麻烦写成Pyside6界面,然后指定存储路径为E:\Temp
当然可以!以下是修改后的代码示例,使用 PySide6 创建界面,并实现在指定路径(E:\Temp)下下载音乐文件:
import os
import requests
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QLineEdit, QPushButton, QMessageBox, QFileDialog
class MusicDownloader(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("音乐下载器")
# 创建界面组件
self.url_label = QLabel("请输入音乐网址:")
self.url_input = QLineEdit()
self.download_button = QPushButton("下载")
# 布局
layout = QVBoxLayout()
layout.addWidget(self.url_label)
layout.addWidget(self.url_input)
layout.addWidget(self.download_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.download_button.clicked.connect(self.download_music)
def download_music(self):
# 获取输入的音乐网址
url = self.url_input.text()
# 发送 HTTP GET 请求获取页面内容
response = requests.get(url)
html = response.text
# 提取音乐文件的URL
start_pos = html.find('http', html.find('"src":"'))# 找到音乐文件 URL 的起始位置
end_pos = html.find('"', start_pos)# 找到音乐文件 URL 的结束位置
mp3_url = html# 提取音乐文件的URL
# 弹出保存文件对话框,选择保存路径
save_path = QFileDialog.getSaveFileName(self, '保存音乐', os.path.join('E:', 'Temp', 'music.mp3'), 'MP3 Files (*.mp3)')
# 如果用户取消保存,则返回
if not save_path:
return
# 发送 HTTP GET 请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 保存音乐文件到指定路径
with open(save_path, 'wb') as f:
f.write(mp3_response.content)
QMessageBox.information(self, "成功", "音乐下载完成")
if __name__ == "__main__":
app = QApplication()
window = MusicDownloader()
window.show()
app.exec()
在该代码中,我们添加了一个输入框用于输入音乐的具体网址(例如 "https://music.163.com/#/song?id=2080607"),然后通过按钮点击事件的处理函数 `download_music` 来下载音乐文件。同时,使用 `QFileDialog.getSaveFileName()` 弹出文件保存对话框,方便用户选择保存路径和文件名。默认的保存路径为 E:\Temp\music.mp3。
请注意,由于 PySide6 需要安装并运行 QT 相关的库,可以使用 pip 进行安装:
pip install pyside6
希望这次能够满足你的需求!如有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-5-1 07:04
当然可以!以下是修改后的代码示例,使用 PySide6 创建界面,并实现在指定路径(E:\Temp)下下载音乐文 ...
我录入网址:https://music.163.com/#/song?id=2080607,
然后报错:
Traceback (most recent call last):
File "D:\Python\pythonProject\Music.py", line 50, in download_music
mp3_response = requests.get(mp3_url)
^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\api.py", line 73, in get
return request("get", url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\sessions.py", line 575, in request
prep = self.prepare_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\sessions.py", line 486, in prepare_request
p.prepare(
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\models.py", line 368, in prepare
self.prepare_url(url, params)
File "D:\Python\pythonProject\.venv\Lib\site-packages\requests\models.py", line 439, in prepare_url
raise MissingSchema(
requests.exceptions.MissingSchema: Invalid URL '': No scheme supplied. Perhaps you meant https://?
凊风 发表于 2024-05-01 07:06
我录入网址:https://music.163.com/#/song?id=208060 ...
非常抱歉给你带来困扰。这个错误是由于 `mp3_url` 变量未正确获取音乐文件的URL导致的。在你提供的网址中,"https://music.163.com/#/song?id=2080607" 是一个包含了 "#/" 的特殊链接,不适用于直接请求。需要对链接进行处理才能获得有效的音乐文件URL。
以下是修改后的代码示例,将输入的网址进行处理,以获取正确的音乐文件URL:
import os
import requests
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QLineEdit, QPushButton, QMessageBox, QFileDialog
class MusicDownloader(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("音乐下载器")
# 创建界面组件
self.url_label = QLabel("请输入音乐网址:")
self.url_input = QLineEdit()
self.download_button = QPushButton("下载")
# 布局
layout = QVBoxLayout()
layout.addWidget(self.url_label)
layout.addWidget(self.url_input)
layout.addWidget(self.download_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.download_button.clicked.connect(self.download_music)
def download_music(self):
# 获取输入的音乐网址
url = self.url_input.text()
# 处理音乐网址以获取正确的音乐文件URL
music_id = url.split('?id=')
mp3_url = f'https://music.163.com/song/media/outer/url?id={music_id}.mp3'
# 弹出保存文件对话框,选择保存路径
save_path = QFileDialog.getSaveFileName(self, '保存音乐', os.path.join('E:', 'Temp', 'music.mp3'), 'MP3 Files (*.mp3)')
# 如果用户取消保存,则返回
if not save_path:
return
# 发送 HTTP GET 请求获取音乐文件
mp3_response = requests.get(mp3_url)
# 保存音乐文件到指定路径
with open(save_path, 'wb') as f:
f.write(mp3_response.content)
QMessageBox.information(self, "成功", "音乐下载完成")
if __name__ == "__main__":
app = QApplication()
window = MusicDownloader()
window.show()
app.exec()
在这个代码中,我们通过对输入的音乐网址进行处理,提取出音乐ID,并构造正确的音乐文件URL(例如 `https://music.163.com/song/media/outer/url?id=2080607.mp3`)。然后,通过发送GET请求获取音乐文件并保存到指定路径。
希望这次能够解决问题。如有其他疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]
2