效果展示

1,打包exe文件,window直接可以运行
2,输入歌曲名字可以直接下载
3,下载后的歌曲保存在netease.exe文件所在的同一个文件夹中,music_netease文件夹是程序自动创建

直接上代码

from tkinter import *
from urllib.request import urlretrieve
from selenium import webdriver
import osheaders = {'Host': 'music.163.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
}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)# 创建一个文件夹# exist_ok=True 如果文件存在不会报错 不会继续创建os.makedirs('music_netease', exist_ok=True)path = 'music_netease\{}.mp3'.format(song_name)# 显示数据到文本框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()# 拼接urlurl = 'https://music.163.com/#/search/m/?s={}&type=1'.format(name)print(url)# 搜索歌曲网页diver = webdriver.Chrome()diver.get(url=url)diver.switch_to.frame('g_iframe')# response = diver.find_element_by_xpath('./following-sibling::div//a/@href')# 获取歌曲idreq = diver.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)# 构建字典 id nameitem = {}item['song_id'] = song_iditem['song_name'] = song_nameprint(item)diver.quit()  # 退出浏览器# diver.close()  # 退出当前页面# 下载歌曲song_load(item)# 搭建界面# 创建界面
root = Tk()
# 添加标题
root.title('网易云音乐')
# 设置窗口大小 x 小写x连,不能用乘号 后面两位是x,y坐标,固定初始位置
root.geometry('560x450+400+200')# 标签控件
label = Label(root, text='请输入下载的歌曲:', font=('华文行楷', 20))
# 标签定位 grid 网格式定位
label.grid()  # 默认 row=0,column=0
# 输入框
entry = Entry(root, font=('隶书', 20))
# 定位 第0行 第1列
entry.grid(row=0, column=1)
# 列表框
text = Listbox(root, font=('楷书', 16), width=50, heigh=15)
# 定位 columnspan 组件横跨的列数
text.grid(row=1, columnspan=2)# 点击按钮
button = Button(root, text='开始下载', font=('隶书', 15), command=get_music_name)
# 定位 sticky 对齐方式 W E N S  东南西北
button.grid(row=2, column=0, sticky=W)# command 点击触发方法
button1 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)
# 定位 sticky 对齐方式 W E N S  东南西北
button1.grid(row=2, column=1, sticky=E)# 显示界面
root.mainloop()

程序运行环境

1,需要python3.0以上的python环境
2,需要python包模块from tkinter import *from urllib.request import urlretrievefrom selenium import webdriver# selenium需要手动安装,前两个模块python3.0版本以上自动
3,安装chromedriver.exe浏览器驱动插件或者phantomjs(推荐使用chromdriver)(1)chromedriver.exe需要和浏览器对应的版本才能有效(2)推荐使用Chrome浏览器(3)将Chromedriver.exe复制到python解释器的scripts文件夹中,重启代码编辑器(4)运行下列代码检验chromdriver.exe是否安装成功from selenium import webdriverdriver = webdriver.Chrome()driver.get('https://www.baidu.com')代码运行能够自动打开百度页面,表示插件chromedriver.exe安装成功
4,以上三步完成,可以运行代码下载歌曲,付费或者不付费的都可以下载,但是试听都需要版权的歌曲无法下载!

程序打包

1,安装pyinstallerpip install pyinstaller  (如果安装失败,用管理员权限安装)2,打包程序(1)下载ico图片,保存到和代码同一文件夹(2)cd 到代码所在文件夹(3)打包 pyinstaller -F -w -i F:\code\image.ico demo.py-F 表示打包(F 大写)-w 取消控制台显示(w 小写)-i 有错误也继续执行(i 小写)ico图片路径(绝对路径)最后是代码名称
  • 打包其他详细教程请查看我的博客 “python_GUI教你撩妹,打包exe文件详解”

  • 打包程序命令

  • 打包完成效果

  • Windows可执行的exe文件在dist文件夹中

不足之处:1,目前只能下载一般品质的歌曲,2,代码中使用了chroemdriver.exe驱动检测插件,这种打包方式还没有完全脱离python环境,等后续改进代码,再发完全改进版

改进版(打包后exe文件,通过js解密获取歌曲ID替换掉插件,增加下载地址路径选择,以及歌曲选择):python网易云音乐下载,可选择歌曲,下载路径

python网易云音乐下载_GUI图形化界面相关推荐

  1. python网易云音乐下载,可选择歌曲,下载路径

    效果图 代码中用到了Crypto模块,Windows安装时会报错,① 建议选择对应解释器的版本搜索安装依赖.whl后缀的依赖包文件,找到之后直接pip install XXX.whl就可以了,在文章后 ...

  2. python网易云音乐下载打包exe文件,Windows可运行

    下载原理: 通过官方的下载链接http://music.163.com/song/media/outer/url?id=歌曲id.mp3, 分析网页寻找歌曲id组装成song_url,urlretri ...

  3. Python 网易云音乐 MV 下载

    Python 网易云音乐 MV 下载 from selenium import webdriver from selenium.webdriver.common.by import By from s ...

  4. python爬虫---网易云音乐下载

    python爬虫爬取网易云音乐 1.实现功能 2.具体实现 1.搜索部分 2.下载歌曲 1.再次获取信息 2.下载 3.结语 Github完整代码获取:https://github.com/Lian- ...

  5. Python爬虫之网易云音乐下载

    Python爬虫之网易云音乐下载 目标 用Python根据网易云音乐的ID,下载音乐,保存到本地MP3格式 可以下载歌曲的范围:所有能够听的歌曲 配置基础 Python 3.5 模块 pycrypto ...

  6. 网易云音乐下载软件(下)

    网易云音乐下载软件 一. 面向对象设计与多线程 二. 打包为exe文件 三. 效果图 前面实现了一个网易云音乐下载器,我们继续进行改进 一. 面向对象设计与多线程 这里增加了一个输入框,与前面方法类似 ...

  7. Python网易云音乐单曲爬取

    Python网易云音乐单曲爬取 代码: import requests import osdef develop(path,url):song_url = urlsong_id = song_url[ ...

  8. 仿造网易云音乐轮播图

    这几天忙着毕业设计,其中一个页面需放上轮播图,遂听着音乐在网上寻(chao)找(xi)灵(an)感(li),猛地发现原来网易云音乐客户端的轮播图就非常好看,所以就尝试着模仿了一个,虽然十分简陋,但好在 ...

  9. Python网易云音乐爬虫大数据分析可视化系统——大屏数据可视化开发之路

    介绍 现在比较流行的大数据数据可视化都是大屏,有钱的人会使用阿里云全家桶的DataV或者商业化的大屏解决方案,但是在国内还是小公司比较多,本人50年大数据开发经验,精通数据可视化,曾经处理过百万亿级别 ...

最新文章

  1. IDEA HTTP状态 404 - 未找到 请求的资源[/]不可用
  2. 安卓StepView事件进度条的简单实现
  3. webpack中设置jquery为全局对象
  4. Gateway网关-全局过滤器
  5. HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
  6. [Leedcode][JAVA][第152题][乘积最大子数组][动态规划]
  7. 网站压力测试工具webbench 安装与使用
  8. ARM汇编杂项伪指令
  9. vue、cnpm不是内部文件_选购办公室钢制文件柜花都文件柜厂家为我们全面解读这一块的知识...
  10. 【Java方法】统计数组内不同元素个数及每个元素的数量
  11. electron 自定义标题栏_electron+vue制作桌面应用--自定义标题栏
  12. JavaScript笔记-前端AES加密
  13. oracle的解释计划,oracle解释执行计划-Oracle
  14. 关键成功因素法(CrISical Success Factors,CSF)
  15. Word中封面怎么设置不显示页码?
  16. 百度图片翻译API,对开发者真的很友好
  17. i7 9750h和r7 5800h差距大不大
  18. Matlab 矩阵的LU分解矩阵(公开代码)
  19. Access2007关键字
  20. torch中的NLLLoss与CrossEntropyLoss

热门文章

  1. 2021在线教育舆情研究
  2. matlab逻辑运算符用法,matlab的逻辑运算符
  3. flink定时读取mysql数据_flink时间系统系列之实例讲解:如何做定时输出
  4. python 去除空格
  5. 一个超方便使用SQL的Python神器
  6. 【java基础系列】13- java的面向对象
  7. 利用python编写批量修改文件名后缀
  8. 到底什么是载波聚合(CA)?
  9. 软件系统环境对鲁大师测试影响,不服跑个分?鲁大师跑分软件全新升级
  10. 微信收到的文件怎么打印出来