自学内容网 自学内容网

输入关键字,进行歌曲下载爬取,并打包成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

成功后会出现dit的文件夹,里面有exe的文件 

 

 


原文地址:https://blog.csdn.net/m0_57265868/article/details/136341700

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!