Python爬虫小白入门经典之爬取网上音乐

您所在的位置:网站首页 mp3音乐下载网页 Python爬虫小白入门经典之爬取网上音乐

Python爬虫小白入门经典之爬取网上音乐

2023-09-25 08:39| 来源: 网络整理| 查看: 265

Python爬虫小白入门经典之爬取网上音乐

前言:在知识付费的时代,免费听音乐已经成了历史,但是随着时代的发展,技术宅男依旧可以获取免费音乐资源,下面我就来教你如何免费获取网络免费音乐资源。部分方法来源于网络,若侵权请告知删除。 如果你想小白变大神,请学习我给你分享的资料,另外,想要获取Python免费资料,请关注公众号:“zhulin1028”;回复“python1"、“python2”、“python3”,即可免费获取。更有很多面试资料供你获取。 在这里插入图片描述

1.需要的Python模块

实现这个过程的主要模块有requests、json、urllib.request、urllib.parse 其中,requests模块用于请求得到相应的数据(这里是得到json数据),json模块用于对得到的json数据进行处理(将json数据转换成字典,主要使用json.loads()方法),urllib.request(使用其urlretrieve()方法,用于下载音乐),urllib.parse(使用其quote()方法,用于对输入的字符串进行编码)。

2.实现思路

首先,我们需要来到酷我音乐的官网,酷我音乐 在输入框中输入关键字,小编输入的是: 破茧 然后回车,可以得到搜索相应的歌曲列表,然而这些数据都是动态加载的,使用requests模块如果直接请求这个网址,根本不可能得到这些数据,这个时候我们可以按电脑键盘F12,来到开发者模式,点击Network下面的XHR,找到这些歌曲列表的那个网址,具体为: 在这里插入图片描述 在这里插入图片描述 我们需要得到这些歌曲中相应的数据如下: 在这里插入图片描述

其中name和artist关键字对应的值为展示用和最终.mp3文件名称,rid关键字对应的值是为后面过程所用。 当然,访问这个网址不是很简单的,需要添加请求头。 参考代码如下:

musicName=input('请输入歌曲名称:') encodName=quote(musicName) url='https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn=1&rn=30&httpsStatus=1'.format(encodName) referer='https://www.kuwo.cn/search/list?key={}'.format(encodName) # 请求头 headers = { "Cookie": "_ga=GA1.2.2021007609.1602479334; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1602479334,1602673632; _gid=GA1.2.168402150.1602673633; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1602673824; kw_token=5LER5W4ZD1C", "csrf": "5LER5W4ZD1C", "Referer": "{}".format(referer), "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36", } response=requests.get(url=url,headers=headers) dict2=json.loads(response.text) misicInfo=dict2['data']['list'] # 歌曲信息的列表 musicNames=list() # 歌曲名称的列表 rids=list() # 存储歌曲rid的列表 for i in range(len(misicInfo)): name=misicInfo[i]['name']+'-'+misicInfo[i]['artist'] musicNames.append(name) rids.append(misicInfo[i]['rid']) print('【{}】-{}->>>{}'.format(i+1,int(random.random()*10)*'#$',name))

我们选择上面列表中歌曲进行试听,可以发现,在刚才那个下面有一个这样的网址,里面也是一个json数据,放有我试听歌曲的下载链接。 如下: 在这里插入图片描述

对这个网址进行分析可以得知,需要刚才我们的那个 rid 数据才能访问到相应的json数据。 网址为: http://www.kuwo.cn/url?format=mp3&rid=140897945&response=url&type=convert_url3&br=128kmp3&from=web&t=1603463521198&httpsStatus=1 也许读者得到的那个网址长度比我这个长一些,我这个是去掉最后面的那个参数的,因为我发现没有最后的那个参数,依旧可以访问到相应的数据。

3.最终代码和运行结果

参考代码如下:

from urllib.request import urlretrieve from urllib.parse import quote import requests import random import json musicName=input('请输入歌曲名称:') encodName=quote(musicName) url='https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn=1&rn=30&httpsStatus=1'.format(encodName) referer='https://www.kuwo.cn/search/list?key={}'.format(encodName) # 请求头 headers = { "Cookie": "_ga=GA1.2.2021007609.1602479334; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1602479334,1602673632; _gid=GA1.2.168402150.1602673633; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1602673824; kw_token=5LER5W4ZD1C", "csrf": "5LER5W4ZD1C", "Referer": "{}".format(referer), "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36", } response=requests.get(url=url,headers=headers) dict2=json.loads(response.text) misicInfo=dict2['data']['list'] # 歌曲信息的列表 musicNames=list() # 歌曲名称的列表 rids=list() # 存储歌曲rid的列表 for i in range(len(misicInfo)): name=misicInfo[i]['name']+'-'+misicInfo[i]['artist'] musicNames.append(name) rids.append(misicInfo[i]['rid']) print('【{}】-{}->>>{}'.format(i+1,int(random.random()*10)*'#$',name)) id=int(input('请输入歌曲序号:')) musicRid=rids[id-1] url2='https://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3&br=128kmp3&from=web&t=1602674521838&httpsStatus=1'.format(musicRid) headers2={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"} response2=requests.get(url=url2,headers=headers2) dict3=json.loads(response2.text) downloadUrl=dict3['url'] path=input('请输入存储路径:') urlretrieve(url=downloadUrl,filename=path+'\{}.mp3'.format(musicNames[id-1])) # 下载歌曲

运行结果: 读者可以看看我在B站上的一个视频,上面有实现这个的整个过程,视频链接为: 运用Python爬虫下载酷我音乐 在这里插入图片描述 在这里插入图片描述 找到相应的目录,可以发现在这个文件夹下面多了一个.mp3文件 在这里插入图片描述

4.总结

首先,小编先声明一下:本程序参考代码仅供学习,切莫用于商业活动,一经被相关人员发现,本小编概不负责!如若侵权请告知删除。 另外,想要获取Python免费资料,请关注公众号:“zhulin1028”;回复“python1"、“python2”、“python3”,即可免费获取。更有很多面试资料供你获取。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3