前言:
现在大家对“js游戏脚本”大概比较关怀,小伙伴们都需要剖析一些“js游戏脚本”的相关内容。那么小编也在网络上汇集了一些对于“js游戏脚本””的相关内容,希望咱们能喜欢,我们一起来学习一下吧!前言
我们都知道Python可以很轻松地实现某些功能,而且还可以编写网页,比如Remi,Pysimplegui,但是操作JavaScript这种浏览器的脚本语言,还是第一次听说,小编也是第一次听说,于是就跟大家脑补这一知识。
一、PyExecJS
是一个可以执行JavaScript脚本的Python模块,可以与网页上的JavaScript进行交互,这样就能更加精准地获取到网页中的加密内容,如果用Python中的网络模块进行请求,会无法解密文档中的加密内容,这个时候使用我们的PyExecJS可以很方便到的解密网页中的加密内容,当然这得你会Js逆向才可以。不过要想PyExecJS解析JS语句没毛病,还得整个Js语言解析环境,这里推荐NodeJS,尴尬。我们来看下PyExecJs的用法:
1.常规操作
import execjsaa=execjs.eval("'one|two|three'.split('|')") #执行JavaScript代码,将字符串分割形成数组print(aa) e=execjs.compile(''' #编译一个表达式function add(x,y){ return x+y;}''')print(e.call('add',10,20))#调用编译好的函数并且赋值
也可以通过获取引擎来运行我们的语句,如下:
print(execjs.get().eval('1+1'))
2.查看解释引擎
print(execjs.get().name)
这里JavaScript的解释引擎是JScript,我们还可以使用自己指定给力的引擎,比如“Nodejs”。
3.指定引擎
import execjsimport osos.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.循环遍历
import js2pyaa=js2py.eval_js('''var i=0;for(var c=1;c<6;c++){console.log(c);}''')print(aa)
3.读取Js文件
我们可以把JS文件写入文件中,以便我们进行调用,如下:
1.js
function f(aa){ if(aa>11){ console.log('OK') }else{ console.log('Fail') }}
Python文件
import js2pywith open('1.js','r') as f: aa=js2py.eval_js(f.read()) print(aa(11))
4.爬取网站数据
这里我们以淘宝为主,我想整它的JS脚本文件,如下:
import execjsimport requestsimport reurl = ';res=requests.get(url).textjs=re.findall(r'<script>(.*?)</script>',res)print(js,'\n')js1=re.sub(r'eval\(','return(',js[0])html="function getLego2WPK(){" + js1 + "};"ctx = execjs.compile(html)temp = ctx.call('getLego2WPK')print(temp)
三、PyV8
基于Google的V8引擎打造,遗憾的是目前只支持Python2版本,而且已不再维护,建议Python2的小伙伴可以去试试。
四、总结
本文主要盘点了3个可以操作JavaScript的Python库,分别是PyExecJS、Js2Py和PyV8,只要我们用好了这些模块以后玩爬虫就能更加技高一筹,并且准确率更高了。
------------------- End -------------------
结尾
看到下面的资料了吗,我还有很多哦!快来私信我领取吧!
带你从Python入门到就业!错过就莫得啦!
标签: #js游戏脚本