Python中如何执行JavaScript代码

请问这里有没有 python, js 方面的大牛?我现在用 python 的 pyv8 来执行一段 js 代码,出了很多错。这段 js 代码可能有点复杂,请问有没有大牛有兴趣试一下,我愿意付报酬,谢谢。
Python中如何执行JavaScript代码

9 回复

貌似最简单的解决方法是,直接 python 结合 node 处理 JS , 之前处理 JS,就是用这种方法。 本人小白,不懂 node,也不熟悉 python, 只是有过类似才处理、


在Python里跑JS代码,最直接的办法是用execjs库,它封装了Node.js环境。先装依赖:

pip install PyExecJS

然后确保你系统里有Node.js。下面是个完整例子:

import execjs

# 创建JS运行时环境
ctx = execjs.compile("""
    function add(a, b) {
        return a + b;
    }
    
    function greet(name) {
        return "Hello, " + name + "!";
    }
""")

# 调用JS函数
result1 = ctx.call("add", 5, 3)
result2 = ctx.call("greet", "World")

print(f"加法结果: {result1}")  # 输出: 加法结果: 8
print(f"问候语: {result2}")    # 输出: 问候语: Hello, World!

如果你需要执行更复杂的JS代码或者操作DOM,可以用js2py

import js2py

# 直接执行JS代码
js_code = """
function factorial(n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}
factorial(5)
"""

result = js2py.eval_js(js_code)
print(f"阶乘结果: {result}")  # 输出: 阶乘结果: 120

# 也可以把JS函数转成Python可调用对象
js_func = js2py.eval_js("(a, b) => a * b")
print(f"乘法结果: {js_func(4, 5)}")  # 输出: 乘法结果: 20

对于网页自动化场景,selenium也能执行JS:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# 在页面上下文中执行JS
result = driver.execute_script("return document.title;")
print(f"页面标题: {result}")

选哪个方案看具体需求:简单计算用execjs,复杂转换用js2py,操作网页用selenium

一句话建议:根据使用场景选合适的JS执行方案。

python 调用 node

提供一个思路,行不行自己判断。
使用 pyqt 库,嵌入一个 webview,使用 web_view.page().runJavaScript() 方法执行 js。

貌似有点绕。。。尴尬~~~~

webview 会用到浏览器吧?我们不想使用浏览器。

webview 并没有调用任何的浏览器。qt 内置了浏览器内核 webkit 所以可以直接请求渲染页面。qt5.6 版本以前是提供 webkit 内核,qt5.6 以后的版本提供 chromium 内核。 使用 pyqt5 去渲染页面还是执行 js 都是可行的。

请问 qt 内置的浏览器内核算不算无头浏览器?谢谢

pyv8 和 js2py 有区别吗?貌似都可以载入 js 环境执行 js 代码吧

为什么不直接调用 node 呢,或者是用 node 写个接口,直接请求。

回到顶部