news 2026/4/16 11:13:57

基于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/4 9:12:48

Command Injection(命令注入)漏洞及其防御策略

命令注入是一种经典且危险的漏洞类型。这种漏洞能让攻击者像给程序“下错指令”一样,操纵它在主机操作系统上执行任意命令。想象一下,一个原本只是用来显示文件内容的简单工具,却被恶意利用来删除系统文件甚至窃取敏感数据。这究竟是如何发生的?又该如何防范? 什么是命令…

作者头像 李华
网站建设 2026/4/16 10:45:44

Java全栈工程师面试实录:从基础到复杂场景的深度解析

Java全栈工程师面试实录:从基础到复杂场景的深度解析 面试者基本信息 姓名:林浩然 年龄:28岁 学历:硕士 工作年限:5年 工作内容:负责前后端架构设计、微服务开发与优化、项目性能调优。 工作成果&#xf…

作者头像 李华
网站建设 2026/4/14 14:40:17

Flutter for OpenHarmony 实战_随机抽签应用设计与实现

Flutter for OpenHarmony 实战:随机抽签应用设计与实现 欢迎加入开源鸿蒙跨平台社区:开源鸿蒙跨平台开发者社区 文章目录Flutter for OpenHarmony 实战:随机抽签应用设计与实现前言一、抽签算法实现1.1 基础随机选择1.2 多次抽签1.3 权重抽签…

作者头像 李华
网站建设 2026/4/16 11:05:29

*我的编码哲学:《满意解》诗创诗解

挑土成塔针不输,假时日月自然悠。 笔记模板由python脚本于2026-02-09 12:49:21创建,本篇笔记适合喜欢思考和中文诗的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Python官…

作者头像 李华
网站建设 2026/4/16 2:43:03

搞懂域名映射:如何把你的“门牌号”挂到“新房子”上?

你好! 你是否遇到过这样的情况: 你满心欢喜地在阿里云、腾讯云或 GoDaddy 上斥资买下了一个超酷的域名(比如 myawesomeblog.com)。然后,你又辛辛苦苦在服务器上、或者 Vercel/Netlify/WordPress 等平台上搭建好了你的…

作者头像 李华
网站建设 2026/4/9 16:33:38

国内进口的车膜品牌推荐几家

开篇:定下基调随着国内汽车消费升级,进口车膜凭借成熟的技术工艺与稳定的品质表现,成为众多车主提升车辆防护与驾乘体验的首选。但市场上品牌繁杂、优劣难辨,给车主带来了选择困境。本次测评针对国内主流进口车膜品牌展开专业对比…

作者头像 李华