PyExecJS 是一个流行的Python库,它可以用来在Python中运行JavaScript代码。通过这个库,Python代码可以调用JS函数,并返回结果。
1 |
pip install PyExecJS |
1 2 3 4 5 6 7 8 9 10 11 12 |
import execjs
# 创建一个执行上下文 ctx = execjs.compile(""" function add(a, b) { return a + b; } """)
# 调用JavaScript中的函数 result = ctx.call("add", 3, 5) print(result) # 输出 8 |
node-vm是Node.js提供的一个虚拟机模块,它允许我们在JavaScript中创建沙箱环境运行代码。通过Python调用node-vm,可以在一个受限的环境中执行JavaScript代码,并返回结果。这种方法尤其适用于需要在隔离环境中执行JavaScript代码的场景。
1 |
pip install node_vm2 |
1 2 3 4 5 6 7 8 9 10 11 |
from node_vm2 import VM
with VM() as vm: vm.run(""" function add(a, b){ return a + b; }
let sum = add(3, 5); """) print(vm.run("sum")) |
在某些情况下,你可能需要模拟浏览器环境来执行JavaScript。selenium 是一个强大的Web自动化工具,可以用来启动浏览器,执行JavaScript,并获取浏览器页面的内容。
1 |
pip install selenium |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from selenium import webdriver
# 启动浏览器 driver = webdriver.Chrome()
# 加载网页 driver.get("http://www.baidu.com")
# 执行JS代码 result = driver.execute_script("return 3 + 5;") print(result) # 输出 8
# 关闭浏览器 driver.quit() |
如果你有一个独立的JavaScript文件,并希望通过Python调用它,可以使用 subprocess 模块来启动一个Node.js进程,执行该脚本并获取结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import subprocess
# 定义 Node.js 脚本 js_code = """ function add(a, b){ return a + b; } console.log(add(1, 2)); """
# 创建 Node.js 脚本文件 with open('script.js', 'w') as f: f.write(js_code)
# 执行 Node.js 脚本 process = subprocess.Popen(['node', 'script.js'], stdout=subprocess.PIPE)
# 获取输出结果 output, error = process.communicate()
# 打印JS脚本的输出 print(output.decode()) # 输出 3 |
通过上述几种方法,Python开发者可以灵活地在不同场景中调用JavaScript代码。希望本文能够为你提供一些有用的参考,帮助你更好地实现Python与JavaScript的协作!