一.安裝模塊
pip install PyExecJS
execjs會自動使用當前電腦上的運行時環境(建議用nodejs,與Phantomjs)
二.簡單的使用
import execjs
js_obj = execjs.compile('js字符串')
js_obj.call('js字符串中方法',參數)
三.js字符串中模擬瀏覽器環境
即導入document
與window
對象
一.安裝依賴
npm install jsdom
二.導入包
js_obj = execjs.compile('js字符串',cwd='node_modules')
三.js字符串中添加抬頭
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;
四.其它方案
使用PhantomJS之前,需要下載它的驅動,然后放下Python代碼統一目錄下。對之前的Python代碼也進行修改:
import execjs import os os.environ["EXECJS_RUNTIME"] = "PhantomJS" node = execjs.get() file = 'eleme.js' ctx = node.compile(open(file).read()) js_encode = 'getParam()' params = ctx.eval(js_encode) print(params)
模擬瀏覽器用的selenium和chrome的webDriver(效率高點,可以自打開一個瀏覽器(都調用一個webdriver對象)),代碼如下:
from selenium import webdriver browser = webdriver.Chrome(executable_path='chromedriver.exe') with open('eleme.js', 'r') as f: js = f.read() print(browser.execute_script(js))