admin管理员组文章数量:1794759
【趣味编程】第1期。用python做简易版音乐下载器
目录
前言
爬虫部分
完整代码
前言
那废话不多说,先了解准备工作。
1.先下载python,可以搜索python官网,到官网里面下载
2.下载外置模块
- 第一种方法,按win+R,输入cmd,然后输入指令pip install requests
- 第二种方法,打开python的文件位置,找到Scripts文件夹,点进去,然后在上方路径输入cmd,回车,再输入指令pip install requests
网络爬虫的编写主要分为三步:分析数据、爬取数据、保存数据
第一步:分析数据
我们这次的爬取对象是著名的音乐搜索器。它聚集了超多音乐网站的资源,同时也容易爬取,适合做新手项目。
首先我们按住键盘上的F12。会出现这样一个界面。它是一个网络监视器,可以查看一些背后的信。然后我们点Network,再按F5或按Ctrl+R刷新一下页面,就会出现一些数据
我们做一些操作时,这个网络监视器就会显示一些数据,所以要想要下载歌曲,就要得到歌曲的下载链接,因此,我们就去搜索歌曲,然后播放一下(播放歌曲时就会出现播放地址,那个就是我们想要的下载地址)。
接着就要去找我们想要的数据在哪里。网络监视器给了我们一个搜索的功能,所以我们可以搜索跟音乐相关的东西,如MP3,m4a,歌曲名字,歌手名字等。找到最后我们发现,在这个接口里有我们想要的数据,所以目的很明确了。
第二步:爬取数据
重点来了!开始写代码了。首先导入我们的模块requests,它是用于爬取数据,向服务器发送请求的。
import requests然后接下来就是爬虫的基本知识。我们爬取数据时,会向服务气发送请求,然后服务器会响应,给我们一些数据。要想服务器给我们数据,我们作为爬虫得伪装一下,不然服务器看到你这个毛头小子,不理你。
我们先看一下它想要的请求方式是什么,点击Headers,就可以看它想要的请求方式是POST,同时也知道它的请求地址等
接着我们往下滑,就可以看到Reaquest Headers,也就是请求头,它相当于名字,身份证什么的,正好是我们伪装需要的信,然后最后的From Data就是这个请求网址的一些参数。post请求的网址通常会隐藏一些参数,没有这些参数,也访问不了这个服务器,这些参数类似开门的密码,必须输入。
所以思路很清晰了,开始写代码。
# 导入模块 import requests #请求地址 url = 'www.xmsj/' # 请求头,也就是伪装自己的信,主要复制后面两个就行,user-Agent就是用户信 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'+ '(KHTML,like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0', 'X-Requested-With': 'XMLHttpRequest'} # 由于请求参数里的input就是我们搜索的内容,所以要搜索其他内容就把这个换掉。 key = input('输入歌曲名字:') # 请求参数 data = {'input': key, 'filter': 'name', 'type': 'netease', 'page': '1'} # 开始请求,要知道是什么请求方式,要一致。因为我们要的数据是一个json格式的,所以后面可以加个.json() response = requests.post(url = url,headers = headers,data = data).json() # 因为json格式的数据类似一个字典,按照字典的访问的操作就行了 # 要第二首等的,可以用遍历列表的操作去实现 # 获取歌曲名字 songname = response['data'][0]['title'] # 获取歌手名字 singer = response['data'][0]['author'] # 获取播放地址,即下载地址 playurl = response['data'][0]['url']第三步:保存数据
我们知道,电脑的文件是以二进制的格式保存的,所以我们可以通过requests模块,得到这个音频文件的二进制数据。
# 先导入模块os,用于文件操作 import os # 这个意思就是如果当前路径没有这个文件夹,就创建这个文件夹,方便把我们的音乐文件放在这里 if not os.path.exists('./music/'): os.mkdir('./music/') # content方法就是获取网址的二进制数据 content = requests.get(url = playurl).content # 打开文件,并在文件里写入二进制数据 with open('./music/{name} {singer}.mp3'.format(name=songname,singer=singer),'wb') as f: f.write(content) f.close() print('下载完成')这样就实现了下载歌曲,做一个音乐下载器的原理就这么简单,最后可以用tkinter,pyqt等模块去创建一个窗口,就可以制作出一好看的音乐下载器啦!
完整代码 # 导入模块 import requests # 导入模块os,用于文件操作 import os #请求地址 url = 'www.xmsj/' # 请求头,也就是伪装自己的信,主要复制后面两个就行,user-Agent就是用户信 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'+ '(KHTML,like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0', 'X-Requested-With': 'XMLHttpRequest'} # 由于请求参数里的input就是我们搜索的内容,所以要搜索其他内容就把这个换掉。 key = input('输入歌曲名字:') # 请求参数 data = {'input': key, 'filter': 'name', 'type': 'netease', 'page': '1'} # 开始请求,要知道是什么请求方式,要一致。因为我们要的数据是一个json格式的,所以后面可以加个.json() response = requests.post(url = url,headers = headers,data = data).json() # 因为json格式的数据类似一个字典,按照字典的访问的操作就行了 # 要第二首等的,可以用遍历列表的操作去实现 # 获取歌曲名字 songname = response['data'][0]['title'] # 获取歌手名字 singer = response['data'][0]['author'] # 获取播放地址,即下载地址 playurl = response['data'][0]['url'] # 这个意思就是如果当前路径没有这个文件夹,就创建这个文件夹,方便把我们的音乐文件放在这里 if not os.path.exists('./music/'): os.mkdir('./music/') # content方法就是获取网址的二进制数据 content = requests.get(url = playurl).content # 打开文件,并在文件里写入二进制数据 with open('./music/{name} {singer}.mp3'.format(name=songname,singer=singer),'wb') as f: f.write(content) f.close() print('下载完成')新人博客,还请多多关照!
版权声明:本文标题:【趣味编程】第1期。用python做简易版音乐下载器 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686836931a108573.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论