# 通过关键字进行歌曲搜索。然后进行对应歌曲内容下载
# 数据:歌曲内容/歌曲标题
# 网址:https://www.gequbao.com
# 分析歌曲链接地址>-歌曲链接地址从哪里生成>-如何实现搜索对应下载功能
# 继续分析音频链接在哪个数据包,数据包链接:晴天:https://www.gequbao.com/api/play_url?id=402856&json=1
# 起风了:https://www.gequbao.com/api/play_url?id=132708&json=1
# id = xxx,目标获取歌曲id
# 分析歌曲id怎么抓包
# 搜索链接地址:获取对应歌曲id:https://www.gequbao.com/s/搜索关键字
# 输入关键字,返回搜索结果,根据结果下载歌曲
import requests
import os
import parsel
from prettytable import PrettyTable # 导入制表模块
while True:
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
key = input('请输入你要下载的歌曲(00退出): ')
if key == '00':
break
search = f'https://www.gequbao.com/s/{key}'
response = requests.get(url=search,headers=headers)
html = response.text
selector = parsel.Selector(html)
div_list = selector.css('.row')[1:-1]
tb = PrettyTable()
tb.field_names = ['序号','歌手','歌名'] # 设置字段名
num = 0
# 创建空列表
info = []
for div in div_list:
song_name = div.css('.text-primary::text').get().strip()
singer = div.css('.text-success::text').get().strip()
music_id = div.css('.text-primary::attr(href)').get().split('/')[-1]
# print(song_name,singer,music_id)
dit = {
'歌手':singer,
'歌名':song_name,
'id':music_id,
}
# 添加字典到列表中
info.append(dit)
tb.add_row([num,singer,song_name])
num += 1
print(tb)
key_num = int(input('请输入你要下载的歌曲序号: '))
# 获取歌曲id,传入到数据包中
link = f"https://www.gequbao.com/api/play_url?id={info[key_num]['id']}&json=1"
music_url = requests.get(url=link,headers=headers).json()['data']['url']
music_content = requests.get(url=music_url,headers=headers).content
if not os.path.exists('music'):
os.mkdir('music')
song_name = info[key_num]['歌名']
with open(file=f"music\\{song_name}.mp3",mode='wb') as f:
f.write(music_content)
print(song_name,'保存成功')
# 如何打包文件
# 在代码所在文件目录路径输入cmd
# 输入打包命令pyinstaller -F file.py
总结:
1.制表模块使用prettytable
from prettytable import PrettyTable
tb = PrettyTable() # 实例化一个对象
tb.field_names = ['序号','歌手','歌名'] # 设置字段名
tb.add_row([num,singer,song_name]) # 写入表格行
2. 将python文件打包成exe文件
首先,在项目中下载pyinstaller包pip install pyinstaller
然后在需要打包的python文件目录路径下输入cmd
在终端输入:pyinstaller -F 文件名.py
成功后会出现dist的文件夹,里面有exe的文件