python运行js之execjs基本使用

5 篇文章 0 订阅

python运行js之execjs基本使用

现在大部分网站都使用JS加密和JS加载的情况,数据并不能直接被抓取出来,这时候就需要使用第三方类库来执行JS语句。

官网:https://pypi.org/project/PyExecJS/

使用前提:电脑需要安装 Node.js

一、安装

pip install PyExecJS

二、基本使用

  • 执行单行js代码
import execjs

js_code = '''
new Date()  // 这里就相当于Node.js的控制台,but 只能执行单行执行命令
'''

print(execjs.eval(js_code))  # 打印当前时间,这里的时间是通过Js中创建对象: new Date()
  • 执行多行js代码,并调用函数
import execjs

js_code = '''
    function add(a,b) {
        // 这里演示最基础的调用函数
        return a + b;
    }
'''
a = 11
b = 18
result = execjs.compile(js_code).call('add', 11, 18)
print(result)
  • Python执行JS文件
  • 当我们在爬取网站时网站使用JS加密or解密,这时我们可以通过抓包and断点,去寻找加密or解密的JS代码,复制到JS文件中,通过JS封装成函数来破解
import execjs

def load_js():
    '''
    加载js文件
    :return:
    '''
    with open('./decode.js', 'r', encoding='utf-8') as f:
        return f.read()

def decode(result):
    '''
    解密
    :return:
    '''
    json_data = execjs.compile(load_js()).call('decodeData', result)
    return json_data

# def

if __name__ == '__main__':
    print(decode(20))  # 200
  • decode.js
function decodeData(result) {
    // 演示函数
    return result * 10;
}

截屏展示效果

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值