2023-03-04T15:27:04.png

已年久失修,不建议用,可以看看js2py

python 爬虫调用 js 的库之 execjs
针对现在大部分的网站都是使用 js 加密,js 加载的,并不能直接抓取出来,这时候就不得不使用一些三方类库来执行 js 语句

  1. 安装

    pip install PyExecJS

  2. 运行环境时
    execjs 会自动使用当前电脑上的运行环境再次安装 node.js

node.js 下载官网:http://nodejs.cn/download/
建议下载 xxx.msi,他会再安装时自动配置环境变量
linux 环境可以用 apt-get install nodejs 命令进行安装

使用execjs 解析抓取的网页数据时,报错:Could not find an available JavaScript runtime

JavaScript runtime

Javascript环境有如:Node, JScript, ......

解决方案:
下载:wget https://nodejs.org/dist/v8.11.4/node-v8.11.4.tar.gz

安装Node:./configure --prefix=/usr/local/node; make install

通过错误定位到文件site-packages/execjs/_runtimes.py,从中可以看到取JavaScript Runtime是这个“EXECJS_RUNTIME”环境变量读取

设置环境变量:export EXECJS_RUNTIME=/usr/local/node

3.环境检测
node -v 显示安装的 nodejs 版本
npm -v 显示安装的 npm 版本

4.基本使用

import execjs


inp=input('需要加密的内容')
#读取js文件的内容
with open('weixin.js', 'r', encoding='utf-8') as f:
    js_code = f.read()

#通过execjs.compile()进行编译js文件内容
compile_result=execjs.compile(js_code)
# 调用js文件传参
#weixin是js中的function方法名,inp是穿的参
result = compile_result.call('weixin', inp)
print(result)

最后修改:2023 年 03 月 15 日
如果觉得我的文章对你有用,请随意赞赏