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),后面接參數