pythonjs代码_python执行js代码

一. 下载

# 下载:

pip3 install PyExecJS

# 注意: 使用execjs必须下载node.js程序,它是js代码运行所依赖的环境

二. 方法介绍

eval()

输入参数:source(JS语句)、cwd(路径)

返回值:result(语句执行结果)

compile()

输入参数:source(JS语句)、cwd(路径)

返回值:编译后的对象

call()

输入参数:name(要调用的JS方法名称)、*args(方法所需要的参数,可多个)

返回值:result(运行方法的返回结果)

三. 基本使用: 执行函数和获取变量

test.js

// 函数

function func(name, age) {

return `name:${name}. age:${age}`

}

// 变量

let name = "12353454";

test.py

import execjs

# open后跟所执行的js文件位置,call后第一个单引号引起来的为所执行的js文件的某个function,

with open('test.js', 'r', encoding='utf-8') as f:

docjs = execjs.compile(f.read())

res = docjs.call('func', 'yang', 18)

print(res) # name:yang. age:18

res = docjs.eval('name')

print(res) # 12353454

四. 进阶使用: 加载window对象

# 下载:

cnpm install jsdom

test.js

// 声明模拟浏览器环境

const jsdom = require("jsdom");

const {JSDOM} = jsdom;

const dom = new JSDOM(`

Hello world

`);

window = dom.window;

document = window.document;

XMLHttpRequest = window.XMLHttpRequest;

let browserName = window.navigator.userAgent;

test.py

import execjs

with open('test.js', 'r', encoding='utf-8') as f:

docjs = execjs.compile(f.read())

res = docjs.eval('browserName')

print(res) # Mozilla/5.0 (win32) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/16.4.0

# 注意:

'''

如果python环境中没有window对象, 需要下载jsdom. 并在.js文件头部声明.

如果没有声明将会抛出异常: execjs._exceptions.ProgramError: ReferenceError: window is not defined

'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值