前言

前面已经做出了一个只属于自己的音乐播放器,那怎么能没有一个音乐下载器呢

之前大家有没有过从电脑上下载歌曲MP3文件放到手机内存卡的经历,随着时代发展,现在的各大音乐软件已经成为播放器,下载音乐是要收费的,现在教大家从零开始可以通过python通过爬虫爬取音乐,教大家打造自己的音乐下载器。

知识点:
1.python基础知识
2.requests库
3.urllib库
4.BeautifulSoup

环境:

windows + pycharm + python3

适合零基础的同学

1、导入工具

import os
from urllib.request import urlretrieve
from tkinter import *
import requests
from selenium import webdriver

2、界面

# 创建界面
root = Tk()
# 标题
root.title('网易云音乐下载器')
# 设置窗口大小
root.geometry('560x450')# 标签控件
label = Label(root,text='请输入歌曲名称:',font=('华文行楷',20))
# 标签定位
label.grid()
# 输入框
entry = Entry(root,font=('隶书',20))
entry.grid(row=0,column=1)
# 列表框
text = Listbox(root,font=('楷书',16),width=50,heigh=15)
text.grid(row=1,columnspan=2)  # 横跨
# 开始按钮
button = Button(root,text='开始下载',font=('隶书',15),command=get_music_name)    #command
button.grid(row=2,column=0,sticky=W)  #sticky  对齐方式  W E N S
# 退出按钮
button1 = Button(root,text='退出程序',font=('隶书',15),command=root.quit)    #command
button1.grid(row=2,column=1,sticky=E)# 显示界面
root.mainloop()

运行代码,只得到一个界面

3、功能

爬取网易云音乐

# https://music.163.com/#/search/m/?s=%E7%9B%97%E5%B0%86%E8%A1%8C&type=1
# http://music.163.com/song/media/outer/url?id=574566207.mp3headers = {'Referer': 'https://music.163.com/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 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)# 创建文件夹os.makedirs('music',exist_ok=True)path = 'music\{}.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()url  = 'https://music.163.com/#/search/m/?s={}&type=1'.format(name)# 隐藏浏览器option = webdriver.ChromeOptions()option.add_argument('--headless')driver = webdriver.Chrome(chrome_options=option)driver.get(url=url)driver.switch_to.frame('g_iframe')# 获取歌曲idreq = 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_id'] = song_iditem['song_name'] = song_namedriver.quit() # 退出浏览器song_load(item)

最后运行代码,效果如下图

如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!

下载歌曲的时候嫌麻烦?打造专属你的音乐下载器相关推荐

  1. 【脚本项目源码】Python制作多功能音乐播放器,打造专属你的音乐播放器

    前言 本文给大家分享的是如何通过利用Python实现多功能音乐播放器,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: os模块 sys模块 time模块 random模块 PyQ ...

  2. 完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)

    本人目前准备利用闲暇时间打造一个完整的音乐播放器项目,主要用于学习及分享!原创不易,转载请注明出处. 这是一个什么样的音乐播放器呢?整体的架构跟酷狗差不多吧,我的方式呢,是一个个组件一个个模块先做好, ...

  3. Navidrome - 开源音乐服务器【打造属于自己的音乐播放器】「端口映射」随时随地想听就听

    转载自cpolar极点云文章:Navidrome - 开源音乐服务器[打造属于自己的音乐播放器]「端口映射」随时随地想听就听 1. 前言 不知从何时开始,我们能用的音乐软件越来越少,笔者使用小米手机很 ...

  4. 以麒麟音乐为例,教你如何构建专属自己的音乐播放器

    麒麟音乐是一款设计美观.功能简洁.支持多种音乐格式的音乐播放器.在播放本地音乐的同时,还可以根据用户喜好.自定义歌单来对音乐进行分组. 除常规模式外,麒麟音乐还有小窗口模式来满足用户的不同需求.想知道 ...

  5. 【Navidrome 开源音乐服务器】手把手教你打造属于自己的音乐播放器随时随地想听就听

    目录 1. 前言 2. Navidrome网站搭建 2.1 Navidrome下载和安装 2.1.1 安装并添加ffmpeg 2.1.2下载并配置Navidrome 2.1.3 添加Navidrome ...

  6. html5中音乐播放器怎么写,打造属于自己的音乐播放器 HTML5之audio标签

    我的音乐播放器 HTML5中增加了Audio和Video标签,这两个标签的用法非常相似.功能却是相当强大,我们先来看一下Audio标签各个浏览器的支持情况.这里用的依然是Can I Use这个在线网站 ...

  7. html音乐播放器标签,打造属于自己的音乐播放器 HTML5之audio标签

    我的音乐播放器 HTML5中增加了Audio和Video标签,这两个标签的用法非常相似.功能却是相当强大,我们先来看一下Audio标签各个浏览器的支持情况.这里用的依然是Can I Use这个在线网站 ...

  8. html5播放器源码自己添加音乐,HTML5 audio标签 打造属于自己的音乐播放器

    最近学习了HTML5中的Audio标签,学习他的最好方式当然是实践,于是就自己写了一个.那就直接上演示链接吧 http://htmlpreview.github.io/?https://github. ...

  9. ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...

    额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...

  10. Android开发本地及网络Mp3音乐播放器(十七)已存在歌曲歌词下载

    转载请注明出处: http://blog.csdn.net/iwanghang/article/details/51388896 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 已存在歌曲 ...

最新文章

  1. linux非lvm分区在线扩容,怎么给不是LVM的根分区扩容
  2. php 请求转发 重定向,PHP怎么实现页面重定向?(图文+视频)
  3. 工作113:声明问题 的定义变量
  4. Python3 基础学习笔记 C04【if 语句】
  5. 设置zookeeper开机自启动
  6. git-对比不同-版本与文件的对比,版本与版本的对比
  7. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
  8. 要素集获取要素_Excel点文件转面要素
  9. Pytorch的可视化工具tensorboardX
  10. Commons-Collections4 集合工具类的使用(一):集合操作
  11. python可视化迷宫求解_用python求解迷宫
  12. 安卓微信自动抢红包插件优化和实现
  13. latex模板中 引入ORCID链接的方法
  14. itest考试系统破解 解决复制粘贴限制
  15. 未来已来 云上安全SaaS化势不可挡
  16. 密码学hash函数-SHA256-512
  17. android app 自动登录,Android APP首次登录和之后自动登录流程
  18. 1,判断一个数是不是质数。 2,选取出100以上、1000以内所有个位数字与十位数字之和被10除所得余数恰好是百位数字的素数(如293).输出上述这些素数的个数及这些素数的和.
  19. vscode中建立vue项目
  20. 分布式文件系统HDFS实践及原理详解part3

热门文章

  1. 学习日志day52(2021-09-22)(1、SpringMVC文件上传 2、Spring发送邮件 3、拦截器 4、日志 )
  2. php的作品简介怎么写,作品简介(参赛作品简介怎么写)
  3. ajax同步导致浏览器假死
  4. odoo 菜单前台无法显示
  5. 算力之都杭州:楼市向何处去
  6. 电脑计算机显示向程序发送命令时出现问题,word提示向程序发送命令时出现问题怎么解决 wo...
  7. 多个激光雷达同时校准、定位和建图的框架
  8. 断舍离:通向自由的26个丢弃
  9. java-net-php-python-springboot学校在线作业考试系统计算机毕业设计程序
  10. gateway中的局部过滤器_GateWay过滤器