输入关键字,进行歌曲下载爬取,并打包成exe文件


# 通过关键字进行歌曲搜索。然后进行对应歌曲内容下载
# 数据:歌曲内容/歌曲标题
# 网址: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的文件 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值