python写爬虫遇到需要解码js一些记录
发布时间:2020-12-20 12:59:57 所属栏目:Python 来源:网络整理
导读:js在线格式化网站 https://beautifier.io/ Python 执行 JS 代码 NodeJS 安装方式 先解决 JS 环境,这里推荐安装 Node.js ,安装方便,执行效率也高。 https://nodejs.org/zh-cn/ 然后 pip install PyExecJS 就可以了。 使用例子 import execjs execjs.get().
js在线格式化网站 NodeJS安装方式
>>> import execjs >>> execjs.get().name # 查看调用的环境 'Node.js (V8)' >>> ctx = execjs.compile(""" # 执行 JS 语句 ... function add(x,y) { ... return x + y; ... } ... """) >>> ctx.call("add",1,2) 3 >>> with open('./test.js') as f: # 执行 JS 文件 ... ctx = execjs.compile(f.read()) ... ctx.call('add',2) PyV8这是 Google 官方将 Chrome V8 引擎用 Python 封装的库,和 PyExecJS 相比,这个库很轻量,不需要额外装 JS 环境,因为 V8 本身就是环境,同时也因为不需要启动外部环境,执行速度很快。
>>> import PyV8 # 注意大小写 >>> with PyV8.JSContext() as ctx: ... ctx.eval(""" ... function add(x,y) { ... return x + y; ... } ... """) ... ctx.locals.add(1,2) Js2Py最后这个库,作用是将 JS 代码直接转译成 Python 代码,这种方式可以摆脱调用 JS 环境的瓶颈,但遗憾的是如果用于很长的混淆 JS 代码,转译过来的大概率会报错… 所以只建议先尝试一下,如果报错及时更换上面的库。 >>> import js2py >>> add = js2py.eval_js(""" ... function add(x,y) { ... return x + y; ... } ... """) >>> add # 可以看到大括号里已被转译 'function add(x,y) { [python code] }' >>> add(1,2) 3 >>> # 使用下边这个方法可以输出转译后的代码 >>> # 可以保存到文件里,下次不需要再次转译 >>> print(js2py.translate_js('var x = 1')) from js2py.pyjs import * # setting scope var = Scope( JS_BUILTINS ) set_global_object(var) # Code follows: var.registers(['x']) var.put('x',Js(1.0)) 来源:忘记了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |