python运行js之execjs基本使用
现在大部分网站都使用JS加密和JS加载的情况,数据并不能直接被抓取出来,这时候就需要使用第三方类库来执行JS语句。
官网:https://pypi.org/project/PyExecJS/
使用前提:电脑需要安装 Node.js
一、安装
pip install PyExecJS
二、基本使用
- 执行单行js代码
import execjs
js_code = '''
new Date() // 这里就相当于Node.js的控制台,but 只能执行单行执行命令
'''
print(execjs.eval(js_code)) # 打印当前时间,这里的时间是通过Js中创建对象: new Date()
- 执行多行js代码,并调用函数
import execjs
js_code = '''
function add(a,b) {
// 这里演示最基础的调用函数
return a + b;
}
'''
a = 11
b = 18
result = execjs.compile(js_code).call('add', 11, 18)
print(result)
- Python执行JS文件
- 当我们在爬取网站时网站使用JS加密or解密,这时我们可以通过抓包and断点,去寻找加密or解密的JS代码,复制到JS文件中,通过JS封装成函数来破解
import execjs
def load_js():
'''
加载js文件
:return:
'''
with open('./decode.js', 'r', encoding='utf-8') as f:
return f.read()
def decode(result):
'''
解密
:return:
'''
json_data = execjs.compile(load_js()).call('decodeData', result)
return json_data
# def
if __name__ == '__main__':
print(decode(20)) # 200
decode.js
function decodeData(result) {
// 演示函数
return result * 10;
}
截屏展示效果