python 调用js_通过python执行js脚本(十)

PyExecJS模块

1.介绍

PyExecJS是一个实现通过python执行js代码的库。虽然这个项目在2019年3月19终止,不再更新和维护,但是用来写爬虫执行js脚本是非常方便的。它最后一个版本是1.5.1。

注意:通过python执行js脚本主要是python进行调用PyExecJS自带的运行环境来实现js脚本的执行。

2.支持的运行环境

一级支持(提供运行类且经过测试)

PyV8 - 一个Googel V8 引擎的python封装库(现在只有python2的,无python3的)

Nashorn - 是一个基于JVM的轻量级高性能的JavaScript运行环境)

二级支持(提供运行类但没有测试)

Apple JavaScriptCore - Included with Mac OS X

SlimerJS - 一个可编写脚本的浏览器类似PhantomJS

Mozilla SpiderMonkey - 是一个用C语言实现的JavaScript脚本引擎

3.安装

$ pip install PyExecJS

或者

$ easy_install PyExecJS

一个简单的案例

>>> import execjs

>>> execjs.eval("'red yellow blue'.split(' ')")

['red', 'yellow', 'blue']

>>> ctx = execjs.compile("""

... function add(x, y) {

... return x + y;

... }

... """)

>>> ctx.call("add", 1, 2)

3

4.注意细节

如果环境变量``EXECJS_RUNTIME被指定,PyExecJs会把它当做默认的JavaScript`运行环境:

>>> execjs.get().name # this value is depends on your environment.

>>> os.environ["EXECJS_RUNTIME"] = "Node"

>>> execjs.get().name

'Node.js (V8)'

也可以手动指定

>>> import execjs.runtime_names

>>> jscript = execjs.get(execjs.runtime_names.JScript)

>>> jscript.eval("1 + 2")

3

>>> import execjs.runtime_names

>>> node = execjs.get(execjs.runtime_names.Node)

>>> node.eval("1 + 2")

PyExecJS的优点是不需要关心JavaScript环境。特别是,它可以在Windows环境下工作,而不需要安装额外的库。

PyExecJS的一个缺点是性能。PyExecJS通过文本与JavaScript运行时通信,速度很慢。另一个缺点是它不完全支持运行时特定的特性。对于某些用例,PyV8可能是更好的选择。但是PyV8不支持python3。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值