1 js2py模块简介
在平时爬虫过程中,我们会遇到网站对js文件加密,无法爬取,现在就让我们来了解一下js2py模块,它可以对js文件进行解密
2 js2py使用
2.1 js2py安装
Python中执行JS代码,通常两个库:js2py,pyexecjs,通常使用的是js2py
- js2py是纯python实现的库,用于在python中运行js代码,本质上是将js代码翻译成python代码
- js2py安装 pip install js2py
2.2 js2py模块快速使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import js2py # print('hello world') js2py.eval_js('console.log("hello world")') # func_js 为add()函数 func_js = """ function add(a,b){ return a+b } """ add = js2py.eval_js(func_js) # 实现print('hello world)和 add()函数 print(add(1, 2)) # 'hello world' 3 print(js2py.eval_js('var a = "python";a')) add = js2py.eval_js('function add(a,b){return a + b}') print(add(2,3)) # python 5 |
2 js代码翻译
1 2 3 | # 翻译js文件为py文件 print(js2py.translate_js("console.log('hello world')")) js2py.translate_file('test.js', 'test.py') |


3 js代码中使用函数和模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import js2py # 导入了一个模块 # 执行了一个python代码 print('sum:',sum([1,2,3])) # sum: 6 context = js2py.EvalJs({'python_sum': sum}) print(context) # <js2py.evaljs.EvalJs object at 0x0000015D3B2380C8> <js2py.evaljs.EvalJs 对象 js_code = ''' python_sum([1,2,3]) ''' # 执行了一个js代码 print('js_code:',context.eval(js_code)) # 在js代码中导入Python模块并使用 # # 使用pyimport语法 js_code = """ pyimport requests console.log('导入成功'); var response = requests.get('http://www.baidu.com'); console.log(response.url); console.log(response.content); """ js2py.eval_js(js_code) |
4 破解js文件
-
1.js转python,就是将js翻译为python。
-
2.利用selenium+phantomjs模拟人工操作。
-
3.利用pyexecjs直接执行js文件
三种方法参考的是:[python爬虫]处理js文件的三个方法
大家可以点击,共同学习~