Python爬⾍实战之⽹易云⾳乐加密解析附源码⽬录
环境
知识点
第⼀步
第⼆步
开始代码
先导⼊所需模块
饿了吗2022年的战略请求数据
提取我们真正想要的⾳乐的名称 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'
borderless钱包}
# 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)
embed在html里的用法保存⽂件
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%2FJbYZBEREFBQZ
vAgttUnJPrvYf; 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'
}
python入门教程视屏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 ⽹易云⾳乐解析内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论