from tkinter import *
from urllib.request import urlretrieve
from time import sleep
from selenium import webdriver
import os
def song_load(item):
song_id = item['song_id']
#print(song_id)
song_name = item['somg_name']
#print(song_name)
song_url ="https://music.163.com/song/media/outer/url?id={}.mp3".format(song_id)
print('下载链接是:',song_url)
# 创建文件夹
os.makedirs("music", exist_ok=True)
path = 'music\{}.mp3'.format(song_name)
#urlretrieve(song_url, path)
#文本框
text.insert(END,"歌曲:{}正在下载中,请稍后!".format(song_name))
#文本框滚动
text.see(END)
#更新
text.update()
#下载
urlretrieve(song_url, path)
#文本框
text.insert(END,"歌曲:{}下载结束,请欣赏!".format(song_name))
# 文本框滚动
text.see(END)
# 更新
text.update()
def get_music_name():
name = entry.get()
url = 'https://music.163.com/#/search/m/?id=28699996&s={}&type=1'.format(name)
#print(url)
#开启隐藏模式运行
# firefox_options = Options()
# firefox_options.add_argument('--headless')
driver = webdriver.Firefox()
driver.get(url)
sleep(2)
driver.switch_to_frame('g_iframe')
#获取歌曲ID
song_id = driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div/div/div[1]/div[2]/div/div/a') \
.get_attribute('href').split('=')[-1]
print(song_id)
song_name = driver.find_element_by_xpath(
'/html/body/div[3]/div/div[2]/div[2]/div/div/div[1]/div[2]/div/div/a/b/span').text
print(song_name)
item = {}
item['song_id'] = song_id
item['somg_name'] = song_name
print(item)
song_load(item)
sleep(2)
driver.quit()#退出浏览器
root = Tk()
root.title('网易云音乐')
root.geometry('560x450')
label = Label(root,text = '请输入下载的歌曲:')
#标签定位
label.grid() #默认0行,0列
#定义输入框
entry = Entry(root)
#标签定位
entry.grid(row=0,column =1)
#定义列表框
text = Listbox(root,width = 50,heigh= 15)
text.grid(row=1,columnspan=2)
#定义按钮
button= Button(root,text = '开始下载',command = get_music_name)
button.grid(row=2,column=0,sticky = W)
button1= Button(root,text = '结束下载',command = root.quit)
button1.grid(row=2,column=1,sticky =E)
root.mainloop()
来源:CSDN
作者:sl01224318
链接:https://blog.csdn.net/sl01224318/article/details/103752653