前言
前面已经做出了一个只属于自己的音乐播放器,那怎么能没有一个音乐下载器呢
之前大家有没有过从电脑上下载歌曲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.mp3 headers = { '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') # 获取歌曲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_id'] = song_id item['song_name'] = song_name driver.quit() # 退出浏览器 song_load(item)
最后运行代码,效果如下图
如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。获取方式,私信小编 “ 资料 ”,即可免费获取哦!