5 超炫酷的爬虫源代码-vip音乐下载器

5. 超炫酷的爬虫源代码-vip音乐下载器收录于话题#网络爬虫1. 准备工作2. 安装第3方库2.1 os 库2.2 tkinter库2.3 webbrowser 库2.4 requests 库2.5

73.Python第三方库安装教程(超详细)

[状态]

我已经安装了这个库,所以这里就不展示图片了。后面有安装的库的图片,如果你不知道,请参考下面的文章。

【请求库的作用】

请求库的工作是发送HTTP 请求并处理响应。

它可以发送GET、POST、PUT 和DELETE 等请求,并支持HTTPS、cookie 和session 等功能。

它还可以处理JSON、XML 和其他格式的数据。

requests 库简化了HTTP 请求的处理,并使Python 程序更容易与Web 服务器交互。

2.5 PySimpleGUI 库PySimpleGUI 是必须安装的第三方库。

【pip安装库代码】

pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/PySimpleGUI

安装过程如下图所示。

5-3 【什么是GUI】

GUI是Graphical User Interface的缩写,中文译为图形用户界面。

图形化[?raf?k(?)l]:图形化。

接口[?nt?fe?s]:接口。

它是一种以图形方式显示计算机操作界面并允许用户通过鼠标、键盘等输入设备与计算机进行交互的技术。

随着GUI的出现,用户可以通过图形界面更直观地操作计算机,而无需记住复杂的命令行指令。

常见的GUI 包括适用于Windows、Mac OS 和Linux 等操作系统的桌面界面。

【PySimpleGUI的作用】

PySimpleGUI 是一个用于创建图形用户界面的Python 库。

提供一种易于使用的方法来创建跨平台GUI 应用程序。

它旨在使GUI 开发变得简单、快速、易于理解和易于维护。

PySimpleGUI 支持多种GUI 工具包,包括Tkinter、Qt、WxPython 和Pygame。

它可用于创建多种类型的GUI 应用程序,包括桌面应用程序、游戏和数据可视化工具。

2.6 Retry 库Retry 是必须安装的第三方库。

【pip安装库代码】

pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/retrying

【重试库的作用】

重试:重试。

重试库的作用是提供一种简单的方法来添加重试逻辑,可以在函数执行失败时自动重试。

这有助于处理一些不稳定的操作,如网络请求、数据库连接等,可以提高程序的健壮性和可靠性。

3、源码上面的所有库都安装完成后,就可以直接将下面的代码复制到你的py文件中了。

然后单击运行。

进口商品

进口金塔拉库存

导入网络浏览器

导入请求

importtkinter.messageboxasmes_box

导入PySimpleGUIassg

来自tkinterimportttk

重试导入重试自

类SetUI(对象):

””

音乐弹出界面

””

def__init__(自身,体重=1000,身高=600):

self.ui_weight=体重

self.ui_height=高度

self.title=’好课精选音乐破解软件’

self.ui_root=tk.Tk(类名=self.title)

self.ui_url=tk.StringVar()

self.ui_var=tk.IntVar()

self.ui_var.set(1)

self.show_result=无

self.song_num=无

self.response_data=无

self.song_url=无

self.song_name=无

self.song_author=无

defset_ui(自身):

””

设置一个简单的UI界面

: 返回:

””

#框架空间

Frame_1=tk.Frame(self.ui_root)

Frame_2=tk.Frame(self.ui_root)

Frame_3=tk.Frame(self.ui_root)

Frame_4=tk.Frame(self.ui_root)

#ui界面菜单设计

ui_menu=tk.Menu(self.ui_root)

self.ui_root.config(菜单=ui_menu)

file_menu=tk.Menu(ui_menu,tearoff=0)

ui_menu.add_cascade(label=’menu’,menu=file_menu)

#file_menu.add_command(label=’步骤’,command=lambda:webbrowser.open(‘www.baidu.com’))

#file_menu.add_command(label=’关于作者’, command=lambda:webbrowser.open(‘www.baidu.com’))

file_menu.add_command(label=’退出’,command=self.ui_root.quit)

#控制内容设置

Choice_passageway=tk.Label(frame_1,text=’请选择音乐搜索频道:’,padx=10,pady=10)

#passageway_button_1=tk.Radiobutton(frame_1,text=’COOL’,variable=self.ui_var,value=1,width=10,height=3)

#passageway_button_2=tk.Radiobutton(frame_1,text=’网易云’,variable=self.ui_var,value=2,width=10,height=3)

#passageway_button_3=tk.Radiobutton(frame_1,text=’QQ音乐’,variable=self.ui_var,value=3,width=10,height=3)

#passageway_button_4=tk.Radiobutton(frame_1,text=’COOL’,variable=self.ui_var,value=4,width=10,height=3)

input_link=tk.Label(frame_2,text=’请输入歌曲名称或歌手:’)

Entry_style=tk.Entry(frame_2,textvariable=self.ui_url,highlightcolor=’紫红色’,highlightthickness=1,

宽度=35)

label2=tk.Label(frame_2,text=”)

play_button=tk.Button(frame_2,text=’搜索’,font=(‘Katai’,11),fg=’紫色’,width=2,height=1,

命令=self.get_KuWoMusic)

label3=tk.Label(frame_2,text=”)

#表格样式

columns=(‘序号’,’歌手’,’歌曲’,’专辑’)

self.show_result=ttk.Treeview(frame_3,height=20,show=’标题’,columns=columns)

下载

download_button=tk.Button(frame_4,text=’下载’,font=(‘Katai’,11),fg=’紫色’,宽度=6,高度=1,padx=5,

稻田=5,命令=self.download_music)

#控制布局

frame_1.pack()

frame_2.pack()

frame_3.pack()

frame_4.pack()

Choice_passageway.grid(行=0,列=0)

#passageway_button_1.grid(行=0,列=1)

#passageway_button_2.grid(行=0,列=2)

#passageway_button_3.grid(行=0,列=3)

#passageway_button_4.grid(行=0,列=4)

input_link.grid(行=0,列=0)

Entrystyle.grid(行=0,列=1)

label2.grid(行=0,列=2)

play_button.grid(行=0,列=3,ipadx=10,ipady=10)

label3.grid(行=0,列=4)

self.show_result.grid(行=0,列=4)

download_button.grid(行=0,列=5)

#设置标题

self.show_result.Heading(‘序列号’,text=’序列号’)

self.show_result.Heading(‘歌手’,text=’歌手’)

self.show_result.Heading(‘歌曲’,text=’歌曲’)

self.show_result.Heading(‘专辑’,text=’专辑’)

#设置列

self.show_result.column(‘序列号’,width=100,anchor=’center’)

self.show_result.column(‘歌手’,width=200,anchor=’center’)

self.show_result.column(‘歌曲’,width=200,anchor=’center’)

self.show_result.column(‘相册’,width=300,anchor=’center’)

#鼠标点击

self.show_result.bind(‘ButtonRelease-1’,self.get_song_url)

@重试(stop_max_attempt_number=5)

defget_KuWoMusic(自我):

””

得到很酷的音乐

: 返回:

””

#清除树形表中的数据

foriteminself.show_result.get_children():

self.show_result.delete(项目)

标题={

‘接受’:’application/json,text/plain,*/*’,

‘接受编码’:’gzip,deflate’,

‘接受语言’:’zh-CN,q=0.9′,

‘缓存控制’ : ‘无缓存’,

‘连接’:’保持活动’,

‘csrf’:’HH3GHIQ0RYM’,

‘推荐人’:’http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6′,

‘用户代理’:’Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)’

‘Chrome/99.0.4844.51Safari/537.36’,

‘Cookie’:’_ga=GA1.2.218753071.1648798611;_gid=GA1.2.144187149.1648798611;_gat=1;’

‘hm_lvt_cdb524f42f0ce19b 5 超炫酷的爬虫源代码-vip音乐下载器

169a8071123a4797=1648798611;’

‘hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1648798611;kw_token=HH3GHIQ0RYM’

}

search_input=self.ui_url.get()

iflen(搜索输入)0:

search_url=’http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?’

搜索数据={

‘键’:search_input,

‘pn’:’1′,

‘rn’:’80’,

‘https 状态’:’1′,

‘reqId’:’858597c1-b18e-11ec-83e4-9d53d2ff08ff’

}

尝试:

self.response_data=requests.get(search_url,params=search_data,headers=headers,timeout=20).json()

Songs_data=self.response_data[‘data’][‘list’]

ifint(self.response_data[‘数据’][‘总计’])=0:

mes_box.showerror(title=’错误’,message=’搜索:{} 不存在。’.format(search_input))

: 其他

foriinrange(len(歌曲数据)):

self.show_result.insert(”,i,values=(i+1,songs_data[i][‘艺术家’],songs_data[i][‘姓名’],

歌曲数据[i][‘专辑’]))

异常超时错误:

mes_box.showerror(title=’错误’,message=’搜索超时。请重新输入并重新搜索!’)

: 其他

mes_box.showerror(title=’错误’,message=’您还没有输入您要搜索的歌曲或歌手,请输入搜索!’)

defget_song_url(自身,事件):

””

获取歌曲下载地址

: 返回:

””

在#treeview 内左键单击

foriteminself.show_result.selection():

item_text=self.show_result.item(item,’值’)

获得

self.song_num=int(项目文本[0])

#获取歌曲下载地址

ifself.song_numisnotNone:

Songs_data=self.response_data[‘data’][‘list’]

歌曲_req_id=self.response_data[‘reqId’]

Song_rid=songs_data[self.song_num-1][‘rid’]

music_url=’http://www.kuwo.cn/api/v1/www/music/playUrl?mid={}type=convert_url3’\

‘httpsStatus=1reqId={}’\

.format(song_rid,songs_req_id)

response_data=requests.get(music_url).json()

self.song_url=response_data[‘data’].get(‘url’)

self.song_name=songs_data[self.song_num-1][‘name’]

self.song_author=songs_data[self.song_num-1][‘艺术家’]

: 其他

mes_box.showerror(title=’错误’,message=’尚未选择下载歌曲。请选择一首’)

defdownload_music(自我):

””

音乐下载

: 返回:

””

ifnotos.path.exists(‘./KuWoMusic’):

os.mkdir(‘./酷我音乐/’)

ifself.song_numisnotNone:

歌曲名称=self.歌曲名称+’–‘+self.song_author+’.mp3′

尝试:

save_path=os.path.join(‘./KuWoMusic/{}’.format(song_name))\。交换(’\\’,’/’)

true_path=os.path.abspath(保存路径)

resp=requests.get(self.song_url)

withopen(save_path,’wb’)asfile:

文件.write(resp.内容)

mes_box.showinfo(title=’下载成功’,message=’歌曲:%s,存储地址为%s’%(self.song_name,true_path))

异常异常:

mes_box.showerror(title=’错误’,message=’找不到歌曲保存的文件夹’)

: 其他

mes_box.showerror(title=’错误’,message=’尚未选择下载歌曲。请选择并下载’)

defprogress_bar(自身,文件大小):

””

任务加载进度条

: 返回:

””

layout=[[sg.Text(‘任务完成进度’)],

[sg.ProgressBar(file_size,orientation=’h’,size=(40,20),key=’progressbar’)],

[sg.取消()]]

#window 只需加载您的自定义布局。第一个参数是窗口标题。

window=sg.Window(‘机器人执行进度’,layout)

#根据key值获取进度条

_progress_bar=窗口[‘进度条’]

foriinrange(file_size):#loop

事件,值=window.read(超时=10)

ifevent==’取消’oreventisNone:

休息

_progress_bar.UpdateBar(i+1)

defui_center(自我):

””

UI界面窗口设置:居中

””

ws=self.ui_root.winfo_screenwidth()

hs=self.ui_root.winfo_screenheight()

x=int((ws/2)-(self.ui_weight/2))

y=int((hs/2)-(self.ui_height/2))

self.ui_root.geometry(‘{}x{}+{}+{}’.format(self.ui_weight,self.ui_height,x,y))

去环(自):

””

函数描述: 循环等待用户事件

””

self.ui_root.resizing(False,False)#禁止改变窗口大小

self.ui_center()#使窗口居中

self.set_ui()

self.ui_root.mainloop()

if__name__==’__main__’:

a=SetUI()

一个循环()

4. 如果执行结果代码执行成功,将显示如下GUI。

5-4 我称之为vip音乐下载器。

5. 要使用音乐下载器,请在“输入歌曲名称或艺术家:”后输入“张杰”。

单击搜索。

所有与张杰相关的歌曲都会显示在GUI界面中,如下图所示。

5-5 单击[下载]。 6. 我下载的音乐在哪里?我使用vscode 编辑器打开了Andy Notes 文件夹。

运行上述代码将在Andy Notes 文件夹中创建一个额外的KuWoMusic 文件夹。

下载的音乐位于“KuWoMusic”文件夹中。

5-6vscode会打开【Andy Notes】文件夹,下载的音乐会在【Andy Notes】文件夹内的【KuWoMusic】文件夹中。

那么我们就重点关注vscode打开的文件夹。

我真诚地希望您能花时间了解有关相对路径的更多信息。回答这个问题让我很头疼,而且浪费时间。

有关相对路径的知识请参考以下链接。

68.Python相对路径

7.部分代码分析【导入库语法】

导入+模块名称

进口商品

导入请求

导入网络浏览器

[代码示例]

进口金塔拉库存

【代码分析】

import tkinter as tk 的作用是导入tkinter 模块并将其缩写为tk。

import PySimpleGUI as sg 的功能是导入PySimpleGUI 模块,简称为sg。

[代码示例]

importtkinter.messageboxasmes_box

【代码分析】

这行代码的意思是将messagebox模块导入到tkinter库中,并重命名为mes_box。

这样就可以使用mes_box调用messagebox模块中的函数,如mes_box.showinfo(),显示一个信息框。

[代码示例]

来自tkinterimportttk

【代码分析】

这行代码的意思是从tkinter 模块导入ttk 子模块。

ttk 是tkinter 的扩展模块,提供额外的控件和样式选项。

[代码示例]

重试导入重试自

【代码分析】

从重试库导入重试函数。

代码分析是通过首先创建库部分来完成的。

稍后有时间我会分析其他代码。

我今天没有检查笔记,因为我很困。如果您发现任何错误或拼写错误,请联系我们更正。

哦,真是一个粗心且不负责任的博主。

8、留言源代码作者为【湖南省最爱课程优先教育】老师。

源码是我在直播课上完成作业后的奖励。

如有侵权,请联系我们删除。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
游戏资讯

500年后日本人可能全姓佐藤:探究日本姓氏变迁的未来走向

2024-5-10 17:33:52

游戏攻略

免费绅士游戏18汉化版下载

2023-10-21 0:08:29

个人中心
购物车
优惠劵
有新私信 私信列表
搜索