当前位置: 首页 > 科技观察

盘点3个可以操作JavaScript的Python库

时间:2023-03-22 01:29:11 科技观察

盘点3个可以操作JavaScript的Python库我听说过一次,小编也是第一次听说,所以和大家一起补了这个知识点。1.PyExecJS是一个可以执行JavaScript脚本的Python模块。可以与网页上的JavaScript进行交互,从而更准确的获取网页中的加密内容。如果使用Python中的网络模块发出请求,将无法解密文档。网页中的加密内容,这时候使用我们的PyExecJS可以很轻松的解密网页中的加密内容,当然你要知道如何逆向Js。但是想要PyExecJS解析JS语句没有问题,就需要整个Js语言的解析环境。这里推荐NodeJS,尴尬。下面来看看PyExecJs的用法:1.一般操作importexecjsaa=execjs.eval("'one|two|three'.split('|')")#执行JavaScript代码,将字符串拆分成数组print(aa)e=execjs.compile('''#编译一个表达式functionadd(x,y){returnx+y;}''')print(e.call('add',10,20))#调用编译好的函数和赋值也可以通过获取引擎来运行我们的语句,如下:print(execjs.get().eval('1+1'))2.查看解释引擎print(execjs.get().name)JavaScript这里官方解释引擎是JScript,我们也可以使用自己指定的引擎,比如“Nodejs”。3.指定引擎importexecjsimportosos.environ["EXECJS_RUNTIME"]="Node"print(execjs.get().name)也可以手动指定引擎,如下:js1=execjs.get(execjs.runtime_names.JScript)print(js1.eval('1'))js2=execjs.get(execjs.runtime_names.Node)print(js2.eval('2'))其次,我觉得Js2Py比较好,可以说是一个复杂的,它不需要依赖其他环境,可以独立运行Js文件,但是它的运行速度可能会慢一点,但这不是问题。下面我们就来看看它所拥有的神器的作用吧。1.常规运行,必要2.循环importjs2pyaa=js2py.eval_js('''vari=0;for(varc=1;c<6;c++){console.log(c);}''')print(aa)3.读取Js文件我们可以将JS文件写入文件中,这样我们就可以调用了,如下:1.jsfunctionf(aa){if(aa>11){console.log('OK')}else{console.log('Fail')}}Python文件importjs2pywithopen('1.js','r')asf:aa=js2py.eval_js(f.read())print(aa(11))4.抓取网站数据这里我们重点关注淘宝,我想编辑它的js脚本文件,如下:re.findall(r'',res)print(js,'\n')js1=re.sub(r'eval\(','return(',js[0])html="functiongetLego2WPK(){"+js1+"};"ctx=execjs.compile(html)temp=ctx.call('getLego2WPK')print(temp)3.PyV8基于Google的V8引擎构建,遗憾的是最重要的是目前只支持Python2版本,不再维护,推荐Python2的小伙伴可以尝试一下。4.总结本文主要盘点了3个可以操作JavaScript的Python库,即PyExecJS、Js2Py和PyV8,只要我们用好这些模块,你就能把爬虫玩得更熟练、准确度更高。