Python爬⾍:运⽤json数据爬取酷我⾳乐
Python爬⾍:运⽤json数据爬取酷我⾳乐
前⾔
前两天听了⼀下酷我⾳乐官⽹的⾳乐,觉得上⾯的⾳乐还不错,想把他们爬取得到。开始,完全没有头绪,但是,最后有了实现它的思路,那就是通过两个json⽂件
最终得到想听的⾳乐。css导航条是什么意思
讲明⼀下:
@
⽬录
1.需要的Python模块in是什么意思
实现这个过程的主要模块有requests、json、quest、urllib.parse
其中,requests模块⽤于请求得到相应的数据(这⾥是得到json数据),json模块⽤于对得到的json数据进⾏处理(将json数据转换成字典,主要使⽤json.loads()⽅
法),quest(使⽤其urlretrieve()⽅法,⽤于下载⾳乐),urllib.parse(使⽤其quote()⽅法,⽤于对输⼊的字符串进⾏编码)。
2.实现思路
⾸先,我们需要来到酷我⾳乐的官⽹,
在输⼊框中输⼊关键字,⼩编输⼊的是:破茧
然后回车,可以得到搜索相应的歌曲列表,然⽽这些数据都是动态加载的,使⽤requests模块如果直接请求这个⽹址,根本不可能得到这些数据,这个时候我们可以按电脑键盘
F12,来到开发者模式,点击Network下⾯的XHR,到这些歌曲列表的那个⽹址,具体为:
我们需要得到这些歌曲中相应的数据如下
其中name和artist关键字对应的值为展⽰⽤和最终.mp3⽂件名称,rid关键字对应的值是为后⾯过程所⽤。
当然,访问这个⽹址不是很简单的,需要添加请求头。
参考代码如下:
musicName=input('请输⼊歌曲名称:')
encodName=quote(musicName)
url='www.kuwo/api/www/search/searchMusicBykeyWord?key={}&pn=1&rn=30&httpsStatus=1'.format(encodName)
referer='www.kuwo/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=5LE    "csrf": "5LER5W4ZD1C",
"Referer": "{}".format(referer),
python请求并解析json数据
"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",
}
(url=url,headers=headers)
dict2=json.)
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))
3.最终代码和运⾏结果
参考代码如下:
quest import urlretrieve
from urllib.parse import quote
import requests
import random
import json
musicName=input('请输⼊歌曲名称:')
encodName=quote(musicName)
url='www.kuwo/api/www/search/searchMusicBykeyWord?key={}&pn=1&rn=30&httpsStatus=1'.format(encodName)
referer='www.kuwo/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=5LE    "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",
}
(url=url,headers=headers)
dict2=json.)
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='www.kuwo/url?format=mp3&rid={}&response=url&type=convert_url3&br=128kmp3&from=web&t=1602674521838&httpsStatus=1'.format(musicRid)
export汉语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"}
params传参数据会消失怎么解决(url=url2,headers=headers2)
超详细tomcat安装及配置教程dict3=json.)
downloadUrl=dict3['url']
path=input('请输⼊存储路径:')
urlretrieve(url=downloadUrl,filename=path+'\{}.mp3'.format(musicNames[id-1]))  # 下载歌曲
运⾏结果:
读者可以看看我在B站上的⼀个视频,上⾯有实现这个的整个过程,视频链接为:
到相应的⽬录,可以发现在这个⽂件夹下⾯多了⼀个.mp3⽂件
4.总结
⾸先,⼩编先声明⼀下:本程序参考代码仅供学习,切莫⽤于商业活动,⼀经被相关⼈员发现,本⼩编概不负责!
另外,需要指明的是希望读者⼀天不要多次运⾏本程序代码,从⽽减少服务其负担。
程序代码或许还有⼀定的不⾜!没有详细地分析这两个⽹址中的参数,读者有兴趣的话,可以尝试尝试。如果读者觉得⼩编的这篇⽂章还不错!离开的时候别忘了点上⼀个⼩⼩的赞!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。