搭建窗口
from tkinter import * # 搭建界面 #创建界面 画板窗口 window = Tk() #创建标题 window.title('网易云音乐') # 设置窗口大小和位置 window.geometry('560x450+400+200') # 标签控件,实现文本和字体及大小 label = Label(window,text='请输入下载的歌曲:',font=('华文行楷',20)) # 标签定位 label.grid() # 输入框 entry = Entry(window,font=('隶书',20)) # 定位 entry.grid(row=0,column=1) # 列表框 text = Listbox(window,font=('楷书',16),width=50,height=15) # 定位 columnspan组件横跨的列数 text.grid(row=1,columnspan=2) # 点击开始下载按钮 button_start = Button(window,text='开始下载',font=('楷书',15),command='') # 定位,按钮‘粘着’在西侧(左侧) button_start.grid(row=2,column=0,sticky=W) # 点击退出按钮 button_quit = Button(window,text='退出程序',font=('楷书',15),command='') # 定位 button_quit.grid(row=2,column=1,sticky=E) # 显示界面 window.mainloop()
爬虫实现下载音乐
歌曲搜索
from selenium import webdriver def get_music_name(): url='https://music.163.com/#/search/m/?s={}&type=1'.format('雅俗共赏') driver=webdriver.Firefox() driver.get(url) get_music_name()
# 爬取音乐(动态页面) # 搜索函数 def get_music_name(): # 获取歌曲名称 name=entry.get() url='https://music.163.com/#/search/m/?s={}&type=1'.format(name) # 隐藏浏览器 option=webdriver.FirefoxOptions() option.add_argument('--headless') driver=webdriver.Firefox(firefox_options=option) # 搜索歌曲页面 # driver = webdriver.Firefox() driver.get(url) # 根据id查询到标签 driver.switch_to.frame('g_iframe') # 获取歌曲id res = driver.find_element_by_id('m-search') music_url = res.find_element_by_xpath('.//div[@class="item f-cb h-flag "]/div[2]//a').get_attribute("href") print(music_url) # 提取id music_id = music_url.split('=')[-1] # print(music_id) # 提取歌名 music_name=res.find_element_by_xpath('.//div[@class="item f-cb h-flag "]/div[2]//b').get_attribute("title") # print(music_name) # 构造字典保存歌曲信息用于下载 item={} item['music_id']=music_id item['music_name']=music_name # 退出浏览器 driver.quit()
下载歌曲
def music_load(item): music_id=item['music_id'] music_name=item['music_name'] # id填充到下载url中 music_download_url='https://music.163.com/song/media/outer/url?id={}.mp3'.format(music_id) # 创建保存文件夹 os.makedirs('music_netease',exist_ok=True) path='music_netease\{}.mp3'.format(music_name) # 显示数据到文本框 text.insert(END,'歌曲:{},正在下载...'.format(music_name)) # 文本滚动 text.see(END) # 更新 text.update() # 下载 urlretrieve(music_download_url,path) # 下载完成,显示完成 text.insert(END,'下载完毕:{},请试听!'.format(music_name)) text.see(END) text.update()
绑定命令
生成可执行文件
感想
作者:ZoomToday
链接:https://blog.csdn.net/qq_36477513/article/details/104823247
来源:CSDN
著作权归作者所有,转载请联系作者获得授权,切勿私自转载。