Python简单网抑云数据采集 JS逆向

news/2024/7/19 10:09:54 标签: python, javascript, 开发语言, 学习, pycharm, 爬虫

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • Python 3.10

  • Pycharm

模块使用:

  • requests -> pip install requests

  • execjs -> pip install execjs

爬虫实现基本思路流程:

一. 数据来源分析:
  1. 明确需求: 明确采集的网站以及数据内容

    • 网址: https://music.163.com/#/discover/toplist?id=3779629

    • 数据: 歌曲内容

  2. 抓包分析: 分析歌曲播放链接地址是那个, 怎么获得

    • 打开开发者工具: F12 / 右键点击检查选择network (网络)

    • 点击播放歌曲

    • 找到音乐播放链接地址: (选择媒体文件 media)
      播放链接: https://m704.music.126.net/20231209203449/814a6a477dc83f8002fa2a08b16f38ba/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/31966535088/1b87/d918/e5fe/cc565b1103eadc6fd1a967372bfe9420.m4a?authSecret=0000018c4e7bde2719dd0aaba0891864

    • 继续分析, 播放链接是从哪来生成: (通过关键字去搜)

    请求方式: post

    请求头参数: 无加密

    请求参数: 表单数据 (加密数据)
    params: √
    encSecKey: √

    通过JS代码断点调试: 跟栈方法

    var bVg1x = window.asrsea(JSON.stringify(i4m), bsk6e([“流泪”, “强”]), bsk6e(WH4L.md), bsk6e([“爱心”, “女孩”, “惊恐”, “大笑”]));

    nodejs 环境 (和你python安装在同一个位置)

二. 代码实现步骤:
  1. 发送请求 -> 模拟浏览器对于url地址发送请求

  2. 获取数据 -> 获取服务器返回响应数据

  3. 解析数据 -> 提取我们需要的内容

  4. 保存数据 -> 保存歌曲数据到本地文件夹

代码展示

导入模块

python"># 导入编译js代码模块
import execjs
# 导入数据请求模块
import requests
# 导入正则表达式模块
import re

模拟浏览器

python">headers = {
    'Origin': '****',
    'Referer': '****/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
}

请求网址

python">link = '****/discover/toplist?id=3778678'

发送请求

python">html_data = requests.get(url=link, headers=headers).text

提取id 和 歌名

python">info = re.findall('<a href="/song\?id=(\d+)">(.*?)</a>', html_data)
print(len(info))
num = 1
for music_id, title in info:
    print(num, music_id, title)
    num += 1

请求网址

python">    url = '****m/weapi/song/enhance/player/url/v1?csrf_token='

“”"
构建请求参数
“”"

读取js代码

python">    f = open('网易云.js', encoding='utf-8').read()

编译js代码

python">    js_code = execjs.compile(f)

调用JS代码函数

python">    i4m = {
        "ids": f"[{music_id}]",
        "level": "standard",
        "encodeType": "aac",
        "csrf_token": ""
    }
    res = js_code.call('post_data', i4m)
    data = {
        'params': res['encText'],
        'encSecKey': res['encSecKey']
    }

发送请求

python">    response = requests.post(url=url, data=data, headers=headers)

获取响应数据

python">    json_data = response.json()

解析数据, 键值对取值

python">    music_url = json_data['data'][0]['url']

保存数据

python">    content = requests.get(url=music_url, headers=headers).content
    with open('music热歌\\' + title + '.mp3', mode='wb') as f:
        f.write(content)
    print(music_url)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇


http://www.niftyadmin.cn/n/5256571.html

相关文章

金融专题 | 对复杂的金融工具进行设计、定价和对冲分析

金融行业使用 Financial Instruments Toolbox™ 执行现金流建模和收益率曲线拟合分析、计算价格和敏感度、查看价格演变&#xff0c;并使用普通股权和固定收益建模方法执行对冲分析。 借助该工具箱&#xff0c;您可以创建新的金融工具类型&#xff0c;使用参数拟合模型和息票剥…

npm,yarn,pnpm包管理器的介绍

npm&#xff0c;yarn和pnpm都是我们通常使用的包管理器&#xff0c;具体有什么区别呢&#xff1f;别的也不细说&#xff0c;就是快&#xff01;更节省磁盘空间。yarn比npm好&#xff0c;pnpm比yarn好&#xff01;

大模型应用_AutoGPT

1 功能 整体功能&#xff0c;想解决什么问题 单独使用 ChatGPT 时&#xff0c;只提供基本的聊天&#xff0c;无法实现具体的功能&#xff0c;如果想提供某种功能&#xff0c;则需要结合程序实现。AutoGPT目标是建立和使用 AI Agent&#xff0c;设定一个或多个目标&#xff0c;…

若依源码分析

一.登录 1.1 生成验证码 基本思路 后端生成一个表达式,74?11 74?转成图片,传到前端进行展示 将结果11存入redis 前端代码实现: 请求后端地址:http://localhost/dev-api/captchaImage,通过反向代理解决前后端跨域问题,将请求路径变为:http://localhost:8080/captchaImag…

2023 ACDU 中国行 · 西安站 | 数据库技术发展及实践

ACDU 中国行西安站由中国数据库联盟联合浪潮数据库等单位共同主办&#xff0c;特邀中国计算机学会&#xff08;CCF&#xff09;为本次活动的指导单位。 作为中国数据库联盟的品牌活动之一&#xff0c;【ACDU 中国行】在线下汇集数据库领域的行业知名人士&#xff0c;共同探讨数…

uniCloud(一) 新建项目、初始化服务空间、云对象访问测试

一、新建一个带有unicloud 二、创建一个服务空间 1. 右键uniCloud&#xff0c;关联云服务空间 我当前没有服务空间&#xff0c;需要新建一个服务空间&#xff0c;之后将其关联。初始化服务空间需要的时间有点长 服务空间初始化成功后&#xff0c;刷新HBuilder&#xff0c;勾选…

推荐系统,推荐模型中负样本的选择和采集

推荐系统中&#xff0c;负样本的采集通常是一个挑战&#xff0c;因为用户往往只提供他们喜欢的项目的反馈&#xff0c;而不喜欢的项目的反馈通常是缺失的。以下是一些常见的负样本采集策略&#xff1a;   1. 随机采样&#xff1a;这是最常见的策略&#xff0c;就是从用户未互…

什么是双电机打包机?

我们都知道有的机器可能不只有一个电机&#xff0c;像我们公司最新生产的打包机&#xff0c;双电机打包机就是有两个电机&#xff0c;一个是退带电机&#xff0c;一个是进带电机&#xff0c;两个电机的好处就是更能提高包装速度&#xff0c;而且还能减少故障录&#xff0c;双电…