Python爬⾍实战之⽹易云⾳乐加密解析附源码⽬录
环境
知识点
第⼀步
第⼆步
开始代码
先导⼊所需模块
请求数据
提取我们真正想要的⾳乐的名称 id
导⼊js⽂件
保存⽂件
完整代码
环境
网易云怎么一起听音乐python3.8
pycharm2021.2
知识点
requests >>> pip install requests
execjs >>> pip install PyExecJS
第⼀步
打开这个⽹站在⾥⾯去分析我们需要的数据每个⾳乐的名称 id
去⽹页源代码查数据,发现并没有,这个⽹页并不是⼀个静态页⾯
打开开发者⼯具,到歌曲的id
【付费VIP完整版】只要看了就能学会的教程,80集Python基础⼊门视频教学
第⼆步
通过代码去实现当前这⼀个步骤
通过代码去访问当这个页⾯ – 拿到⽹页源代码
提取我们真正想要的⾳乐的名称 id
下载⾳乐: id获取是为了下载⾳乐分析⾥⾯⾳乐数据的加密规则去下载歌曲
开始代码
先导⼊所需模块
import requests
import re
import execjs
请求数据
# 通过代码去访问当这个页⾯ -- 拿到⽹页源代码
url = 'music.163/discover/toplist'
# 伪装
headers = {
'cookie': '_ntes_nuid=063717de540d3ec18d9b4a0bdf51e931; WM_TID=sxztjH%2FJbYZBEREFBQZvAgttUnJPrvYf; ntes_kaola_ad=1; NMTID=00OSBNvfChgV2TD7k5IhSzky6R8lXgAAAF0zoWmoA; _ntes_nnid=063717de540d3ec18d9b4a0bdf51e931,160734 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
# url: 分析出来的真正数据链接
# headers: 伪装请求头
response = (url, headers).text
# <Response [200]>: 告诉你访问成功了
提取我们真正想要的⾳乐的名称 id
zip_data = re.findall('<li><a href="/song\?id=(.*?)" rel="external nofollow" rel="external nofollow" >(.*?)</a></li>', response)
for music_id, title in zip_data:
# url_1 = 'music.163/song/media/outer/url?id=' + music_id
url_1 = 'music.163/weapi/song/enhance/player/url/v1?csrf_token='
result = ctx.call('start', music_id)
data = {
'params': result['encText'],
'encSecKey': result['encSecKey']
}
# 发送请求
# 当前的⾳乐数据
music_url = requests.post(url_1, data=data, headers=headers).json()['data'][0]['url']
music_data = (music_url, headers).content
title = re.sub(r'[/\\:*?"<>|]', '_', title)
导⼊js⽂件
# js⽂件导⼊
js = open('music163.js', mode='r', encoding='utf-8').read()
ctx = execjspile(js)
保存⽂件
with open('music/' + title + '.mp3', mode='wb') as f:
f.write(music_data)
print(title)
完整代码
import requests
import re
import execjs
url = 'music.163/discover/toplist'
# 伪装
headers = {
'cookie': '_ntes_nuid=063717de540d3ec18d9b4a0bdf51e931; WM_TID=sxztjH%2FJbYZBEREFBQZv
AgttUnJPrvYf; ntes_kaola_ad=1; NMTID=00OSBNvfChgV2TD7k5IhSzky6R8lXgAAAF0zoWmoA; _ntes_nnid=063717de540d3ec18d9b4a0bdf51e931,160734 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
response = (url, headers).text
zip_data = re.findall('<li><a href="/song\?id=(.*?)" rel="external nofollow" rel="external nofollow" >(.*?)</a></li>', response)
js = open('music163.js', mode='r', encoding='utf-8').read()
ctx = execjspile(js)
for music_id, title in zip_data:
url_1 = 'music.163/weapi/song/enhance/player/url/v1?csrf_token='
result = ctx.call('start', music_id)
data = {
'params': result['encText'],
'encSecKey': result['encSecKey']
}
music_url = requests.post(url_1, data=data, headers=headers).json()['data'][0]['url']
music_data = (music_url, headers).content
title = re.sub(r'[/\\:*?"<>|]', '_', title)
with open('music/' + title + '.mp3', mode='wb') as f:
f.write(music_data)
print(title)
到此这篇关于Python爬⾍实战之⽹易云⾳乐加密解析附源码的⽂章就介绍到这了,更多相关Python ⽹易云⾳乐解析内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布评论