execjs的使用
1、安装PyExecJS包
pip3 install pyexecjs
2、本地安装Node.js:
- 执行js有时需要浏览器
环境
,需要window对象和document对象,所以需要安装Node.js环境
- Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/,历史版本下载地址:https://nodejs.org/dist/
3、Node中安装jsdom模块 npm install jsdom
4、JS文件开头添上下述固定代码
//解决TextEncoder is not defined const textencoding = require('text-encoding'); TextEncoder = textencoding.TextEncoder; TextDecoder = textencoding.TextDecoder; //解决浏览器环境问题 const jsdom = require("jsdom"); const {JSDOM} = jsdom; const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>'); window = dom.window; document = window.document; XMLHttpRequest = window.XMLHttpRequest;
5、python脚本中execjs的使用
import execjs #导入 #生成JavaScript运行环境,环境名可以指定 node = execjs.get() #安装nodejs后,会得到运行环境名为:Node.js (V8) with open('js_code.js',encoding='utf-8') as f: js_code = f.read() #编译js代码 ctx = node.compile(js_code, cwd=r'E:\Nodejs\node_modules\npm\node_modules') #compile方法去加载js代码,参数cwd指定本地安装模块所在目录 #两种方式执行js函数 data1 = ctx.eval('getParam({"city":"北京"})') #eval方法中,整个函数调用包含在字符串内 data2 = ctx.call('getParam',{'city':'北京'}) #call方法中,第一个参数是函数名(str),后面接参数
6、方法简介
#execjs是python操作js代码的模块 #方法 execjs.get() #参数:无 返回值:node 返回值意义:node.js对象,可编译js代码 作用:获取node.js对象,可编译js代码 #node是通过execjs.get()获取到的对象,可用于编译js代码 #方法 node.compile(code, cwd="") #参数: code:string,js代码字符串 cwd:node的modules的安装地址 返回值:执行js代码对象 返回值意义:获取执行js代码对象,可执行js代码 作用:获取执行js代码对象,可执行js代码 #ctx是通过node.compile(code, cwd=“”)获取的执行js代码对象 #方法 ctx.eval(function_name) #参数: function_name:string,要执行的方法名 返回值:方法的返回参数 返回值意义:执行方法,获取方法的返回值参数 作用:执行方法,获取方法的返回值参数