python打造音乐下载器(tkinter+爬虫)

A:
1.用tkinter里面的组件创建一个可视化窗口
2.用自动化测试的selenium获取网易云音乐的id 和 xpath方面的提取,主要是对歌曲id的提取,然后套网址(请自己去下载一个属于自己的driver,个人用的是火狐,我的博客里面有下载地址)
3.os模块创建存放音频的文件
4.用urllib.request的urlretrieve方法对音频进行下载
5.用法:在窗口里输入想下载的歌曲(如果找不到歌曲要对对应歌曲的xpath进行更改即可),按下下载歌曲等待即可(其中会自动打开浏览器)
B. 代码块

#time:2019.12.5
#python/pycharm
from tkinter import *
import os
from urllib.request import urlretrieve
from selenium import webdriver
#http://music.163.com/song/media/outer/url?id={}.mp3
def song_load(item):
   song_id = item['song_id']
   song_name = item['song_name']
   song_url = 'http://music.163.com/song/media/outer/url?id={}.mp3'.format(song_id)
   #os模块创建文件
   os.makedirs('music',exist_ok=True)
   path = 'music\{}.mp3'.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=2460477771&s={}&type=1'.format(name)
#隐藏浏览器
    #option = webdriver.FirefoxOptions()
    #option.add_argument('--headless')

    #driver = webdriver.Firefox(firefox_options=option)
#弹浏览器
    driver = webdriver.Firefox()
    driver.get(url=url)
    driver.switch_to.frame('g_iframe')
    #获取id
    req = driver.find_element_by_id('m-search')
    a_id=req.find_element_by_xpath('.//div[@class="item f-cb h-flag  "]/div[2]//a').get_attribute('href')
    print(a_id)
    song_id = a_id.split('=')[-1]
    print(song_id)
    song_name=req.find_element_by_xpath('.//div[@class="item f-cb h-flag  "]/div[2]//b').get_attribute('title')
    print(song_name)
    item = {}
    item['song_name']=song_name
    item['song_id'] = song_id
    song_load(item)
#get_music_name()
root = Tk()
root.title('歌曲下载')

root.geometry()
#输入框
label = Label(root,text='请输入要下载的歌曲:',font = ('华文行楷',20))
label.grid()
#列表框
entry = Entry(root,font=('华文行楷',20))
entry.grid(row=0,column=1)

text=Listbox(root,font=('华文行楷',20),width = 50,height=15)
text.grid(row=1,columnspan=2)
#开始下载按钮
botton=Button(root,text='下载歌曲',font=('华文行楷',15),command=get_music_name)
botton.grid(row = 2,column = 0,sticky=W)
#退出按钮
botton1=Button(root,text='退出',font=('华文行楷',15),command=root.quit)
botton1.grid(row = 2,column = 1,sticky=E)

#显示界面
root.mainloop()

C.效果图
python打造音乐下载器(tkinter+爬虫)_第1张图片

python打造音乐下载器(tkinter+爬虫)_第2张图片

python打造音乐下载器(tkinter+爬虫)_第3张图片python打造音乐下载器(tkinter+爬虫)_第4张图片

你可能感兴趣的:(python打造音乐下载器(tkinter+爬虫))