本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
一、前言
之前大家有没有过从电脑上下载歌曲MP3文件放到手机内存卡的经历,随着时代发展,现在的各大音乐软件已经成为播放器,下载音乐是要收费的,
现在教大家从零开始可以通过python通过爬虫爬取音乐,教大家打造自己的音乐下载器。
二、知识点
1.python基础知识
2.requests库
3.urliib库
4.BeautifulSoup
三、所用到得库
import os
from urllib.request import urlretrieve
from tkinter import *
import requests # pip
import jsonpath # json数据的解析工具
四、 功能
爬虫
- url
- 模拟浏览器请求
- 解析网页源代码
- 保存数据
五、环境配置
解释器 python3.6
编辑器 pycharm专业版 激活码
六、完整代码
def song_load(url, title):
# 创建文件夹
os.makedirs("音乐", exist_ok=True)
path = "音乐\{}.mp3".format(title)
text.insert(END, '歌曲:{},正在下载...'.format(title))
# 文本框滚动
text.see(END)
# 更新
text.update()
# 下载
urlretrieve(url, path)
text.insert(END, '下载完毕:{},请试听'.format(title))
# 文本框滚动
text.see(END)
# 更新
text.update()
def get_music_name():
"""搜索歌曲"""
name = entry.get()
platfrom = var.get()
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
'x-requested-with': 'XMLHttpRequest' # 判断请求是异步还是同步
}
data = {
'input': name,
'filter': 'name',
'type': platfrom,
'page': 1,
}
url = 'https://music.liuzhijin.cn/'
resp = requests.post(url=url, data=data, headers=headers)
json_text = resp.json()
title = jsonpath.jsonpath(json_text, '$..title')[0]
author = jsonpath.jsonpath(json_text, "$..author")[0]
url = jsonpath.jsonpath(json_text, "$..url")[0]
# 下载
song_load(url, title)
# 一 界面
# 1\. 创建画布
root = Tk()
# 2\. 设置标题
root.title('全网音乐下载器')
# 3\. 设置窗口大小以及出现位置
root.geometry('560x450+400+200')
# 4\. 标签组件
label = Label(root, text='请输入下载歌曲:', font=('华文行楷', 20))
# 5\. 定位 布局
label.grid()
# 6\. 输入框组件
entry = Entry(root, font=('隶书', 20))
entry.grid(row=0, column=1)
# 7\. 单选按钮
var = StringVar()
r1 = Radiobutton(root, text='网易云', variable=var, value='netease')
r1.grid(row=1, column=0)
r2 = Radiobutton(root, text='QQ', variable=var, value='qq')
r2.grid(row=1, column=1)
# 8\. 列表框
text = Listbox(root, font=('隶书', 16), width=50, heigh=15)
text.grid(row=2, columnspan=2)
# 9\. 下载按钮
button1 = Button(root, text='开始下载', font=('隶书', 15), command=get_music_name)
button1.grid(row=3, column=0)
# 10\. 退出按钮
button2 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)
button2.grid(row=3, column=1)
# 显示界面
root.mainloop()
# 二 功能
# pyinstaller
七、实现界面
在这里插入图片描述界面不是很完美,主要是时间原因,没用调整的那么好看,但是下载功能齐全。
网友评论