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),后面接参数