当我们分析爬虫时,有时候会遇到一些加密参数,这个时候就需要我们逆向分析js
python执行js有一些第三方库
所以我们只要在对应js代码里最前面加上以下代码就能正常运行
代码语言:javascript复制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;
在全局安装jsdom后,在node里按上面的写法是没有问题的,但是我们要在python中使用的话,不能在全局安装 如果在全局安装,使用时会报如下错误,说找不到jsdom
代码语言:javascript复制execjs._exceptions.ProgramError: Error: Cannot find module 'jsdom'
解决办法有两种 1.就是在python执行文件所在的运行目录下,使用npm安装jsdom 2. 使用cwd参数,指定模块的所在目录,比如,我们在全局安装的jsdom,在cmd里通过npm root -g 可以查看全局模块安装路径: C:Usersw001AppDataRoamingnpmnode_modules 我们使用时,代码可以按下面的写法写
代码语言:javascript复制import execjs
with open(r'要运行的.js','r',encoding='utf-8') as f:
js = f.read()
ct = execjs.compile(js,cwd=r'C:Usersw001AppDataRoamingnpmnode_modules')
print(ct.call('Rohr_Opt.reload','1'))