news 2026/4/23 14:08:28

基于python调用javascrpt代码:学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于python调用javascrpt代码:学习笔记

PyExecJS简介

pyexecjs是一个python的库,用于python环境中调用执行javascript代码。对于爬虫逆向来说,这个库是非常合适的。

前期准备

我们需要提前去下载安装node.js

node.js官网下载地址:Node.js — 下载 Node.js®

# 验证 Node.js 版本: node -v # 验证 npm 版本: npm -v

库的安装:

pip install pyexecjs2

基本使用

import execjs js_code = """ function add_number(num_1, num_2) { return num_1 + num_2; } """ # 执行js代码之前先确定是否是v8环境 print(execjs.get()) # 编译js代码 run_js = execjs.compile(js_code) """ 执行js代码有两种方式: call eval """ # 方式1:call result = run_js.call("add_number", 1, 2) print(result) # 方式2:eval result = run_js.eval("add_number(3, 4)") print(result)

运行结果

ExternalRuntime(Node.js (V8)) 3 7

读取js文件并执行

python文件中的内容

import execjs # index.js是js文件名字 with open("index.js", "r", encoding="utf-8") as f: js_code = f.read() run_code = execjs.compile(js_code) print(run_js.call("run_add_func", 1, 2))

javascript文件中的内容

function run_add_func(num_1, num_2) { return num_1 + num_2; }

运行结果

3

在python中执行js的异步程序

在python程序中是无法直接获取JavaScript中的异步函数返回值的,需要使用subprocess完成异步函数的返回至获取。

subprocess是python环境中执行操作系统级别的命令的模块,如ls、pwd、ifconfig等操作
系统有关的命令。

subprocess创建子进程来执行相关的命令,并连接他们的输入、输出和错误管道,获取并返回状态。

实例:

python文件中的代码

import subprocess """ capture_output: 通过capture_output为True来捕获控制台输出内容,默认为False text: 指定是否将输出结果以文本形式返回 """ result = subprocess.run(['node', 'run_async_func.js'], capture_output=True, text=True, encoding='utf-8') print(result) # 返回对象 print(result.stdout.strip()) # 返回结果

JavaScript文件中的代码

function getAsyncData() { return new Promise(function (resolve, reject) { resolve('异步数据测试...'); }); } // js调用异步函数 getAsyncData().then(res => console.log(res));
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:05:23

SpringBoot配置终极指南:从入门到精通

这是一份非常详细、实用、通俗易懂,权威、全面的Spring Boot配置文件全面指南,包含了从基础到高级的各个方面,并附有可直接运行的代码示例。Spring Boot配置文件全面指南目录Spring Boot配置文件概述1.1 配置文件的作用与重要性1.2 配置文件的…

作者头像 李华
网站建设 2026/4/6 6:31:47

基于SpringBoot+Vue的求职招聘平台设计与实现

前言 🌞博主介绍:✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发、文档编写、答疑辅导等。✌…

作者头像 李华
网站建设 2026/4/23 13:09:16

解码CAN总线

CAN总线概述 CAN总线(Controller Area Network,控制器局域网络)是多主控、串行通信的总线标准,由德国博世(Bosch)公司于1980年代为汽车电子系统研发,初衷是解决汽车内部各控制单元(发…

作者头像 李华
网站建设 2026/4/23 14:07:54

AI原生应用必看:用户意图理解的常见误区与解决方案

AI原生应用必看:用户意图理解的常见误区与解决方案 关键词:AI原生应用、用户意图理解、常见误区、解决方案、自然语言处理 摘要:本文聚焦于AI原生应用中用户意图理解这一关键问题。首先介绍了文章的背景,包括目的、预期读者等。接…

作者头像 李华
网站建设 2026/4/23 13:35:33

C++课后习题训练记录Day99

1.练习项目: 问题描述 在古老的中国,有一个神秘的传说。在一座寺庙中,有四个精美的瓷瓶,每个瓷瓶中都装有神秘的珍珠。珍珠的数量可以用来衡量寺庙的强大。寺庙的主持阿坤老师有一种神秘的力量,他可以做出以下操作&a…

作者头像 李华
网站建设 2026/4/23 7:18:01

arm架构能装windows吗?arm架构安装Windows两种方法

ARM架构的处理器能安装Windows吗?——近年来,国产操作系统在自主可控、安全可信方面展现出显著优势。随着国产操作系统的普及,许多联想开天电脑预装了麒麟或UOS系统。然而,部分用户因软件兼容性或使用习惯,希望转向Win…

作者头像 李华