python使用execjs利用jsdom来执行含有document的js代码方案(上)

news2025/1/11 6:59:41

先说一下环境:win7 64位,python3.8.10。

python使用execjs执行含有document的js代码时,会出现报错:

execjs._exceptions.ProgramError: TypeError: 'document' 未定义

原因是纯js代码中是不包含浏览器里对象的(如document、window等),这时就需要一个叫做jsdom的库。全局安装命令为:

npm i jsdom -g

 

首先需要安装npm,npm是nodejs 下的包管理器。

1、登录网址Node.js

下载后安装

结果出现如下问题,需要最低Windows8.1才可以。

尝试下载一个早一点版本的,历史版本下载网址Previous Releases | Node.js 

 

 

 下载并解压,我的路径是(C:\Users\Administrator\Downloads\node-v13.14.0-win-x64\node-v13.14.0-win-x64),其中node_modules是模块,node.exe是nodejs程序,npm.cmd是包管理器。

 cmd进入此目录,运行node -v和npm -v,可以。

 现在,cmd进入npm的路径下安装jsdom。

npm i jsdom -g

 结果报错,看起来还是版本的问题:

经各种查询研究,jsdom的19.0.0的版本可以。通过下面网址可以看jsdom的各个版本。

https://www.npmjs.com/package/jsdom?activeTab=versions

https://www.npmjs.com/package/jsdom/v/19.0.0?activeTab=readme

安装指定版本(-g是指全局安装)的命令如下:

npm i jsdom@19.0.0 -g

安装完成后,cmd进入node路径下运行node

 依次输入命令,可以看到有识别window和document的环境了。

const jsdom=require("jsdom");
const {JSDOM}=jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
dom.window
dom.window.document

退出node的方式是快捷键:ctrl+c,好像要按两遍。

至此,jsdom已经在本机安装成功,接下来就要使用python、execjs来使用它。在下节讲。

备注:要将node和npm添加至环境变量,我的电脑-右键-属性-高级系统设置-然后下图操作

编辑后,里面应该有内容,在已有内容的最后先加一个英文的;,然后把node和npm的路径C:\Users\Administrator\Downloads\node-v13.14.0-win-x64\node-v13.14.0-win-x64填入即可 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构体变量的初始化和引用

任务描述 本关任务&#xff1a;从键盘输入两个学生的学号&#xff0c;姓名和成绩&#xff08;整数&#xff09;&#xff0c;分别存入结构体中&#xff0c;输出成绩较高的学生的学号&#xff0c;姓名和成绩。 相关知识 结构体类型用于描述由多个不同数据类型的数据构成的复合…

ENSP防火墙错误40解决办法

推荐版本&#xff1a; win10&#xff1a;ensp-1.3.00、virtualbox-5.2.40 win11&#xff1a;ensp-1.3.00、virtualbox-5.2.44 错误代码40 一、安装路径中不可有中文字符&#xff0c;最好直接安装在默认路径 双击安装好的vbox软件看能否运行&#xff0c;如果可以则跳过该步骤…

C语言入门log02

2023.9.17 周日 江苏 软件&#xff1a;visual studio 2017 &#xff1b;注释快捷键 ctrlk&#xff0c;ctrlc&#xff1b;运行快捷键 ctrlf5 B站视频 P2 #define _CRT_SECURE_NO_WARNINGS 1 用于vs软件的scanf函数报错。 设置方法打开文件粘贴这句话&#xff0c;如果无法…

VuePress网站如何使用axios请求第三方接口

前言 VuePress是一个纯静态网站生成器,也就是它是无后端,纯前端的,那想要在VuePress中,发送ajax请求,请求一些第三方接口,有时想要达到自己一些目的 在VuePress中&#xff0c;使用axios请求第三方接口&#xff0c;需要先安装axios&#xff0c;然后引入&#xff0c;最后使用 本文…

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

沈阳建筑大学《乡村振兴战略下传统村落文化旅游设计》 许少辉八一著作

【自学开发之旅】Flask-前后端联调-异常标准化返回

注册联调&#xff1a; 前端修改&#xff1a; 1.修改请求向后端的url地址 文件&#xff1a;env.development修改成VITE_API_TARGET_URL http://127.0.0.1:9000/v1 登录&#xff1a;token验证 校验forms/user.py from werkzeug.security import check_password_hash# 登录校验…

[计组03]进程详解2

目录 应用程序 系统调用 驱动 软件 再看进程 进程管理 如何管理 ? 创建一个进程 注意 PCB 文件描述表 进程相关重点 为什么有进程调度 虚拟空间地址 这次我们从更加详细全面的角度看一下进程在计算机中体系中的展现 应用程序 应用程序 调动 系…

Maxon Cinema 4D 2024:创新功能助力新境界

Maxon的Cinema 4D 2024是一款在全球范围内广受赞誉的三维动画和建模软件。新版本在速度、性能、本地化、功能增强等多个方面进行了全面的提升&#xff0c;为用户提供了更加流畅、高效且丰富的创作体验。 飞一般的速度 Cinema 4D 2024在速度上较之前的版本有了显著的提升&…

【c++GDAL】IHS融合

【c&GDAL】IHS融合 基于IHS变换融合&#xff0c;实现多光谱和全色影像之间的融合。IHS分别指亮度(I)、色度(H)、饱和度(S)。IHS变换融合基于亮度I进行变换&#xff0c;色度和饱和度空间保持不变。 IHS融合步骤&#xff1a; &#xff08;1&#xff09;将多光谱RGB影像变换到…

拥塞控制概念

网络拥塞 何为拥塞控制&#xff1f;拥塞控制是指在计算机网络中&#xff0c;通过监测网络的拥塞程度并采取相应的措施来维持网络的稳定运行的方法。它的主要目标是确保网络资源的合理利用&#xff0c;避免网络拥塞导致的性能下降和服务质量下降。 为什么需要拥塞控制&#xf…

【力扣每日一题】2023.9.17 打家劫舍Ⅱ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 打家劫舍2在1的基础上增加了一个规则&#xff0c;那就是房屋是首尾相连的。 这对我们解题有什么影响呢&#xff1f; 唯一的影响就是我们…

数据结构:树和二叉树之-堆排列 (万字详解)

目录 树概念及结构 1.1树的概念 1.2树的表示 ​编辑2.二叉树概念及结构 2.1概念 2.2数据结构中的二叉树&#xff1a;​编辑 2.3特殊的二叉树&#xff1a; ​编辑 2.4 二叉树的存储结构 2.4.1 顺序存储&#xff1a; 2.4.2 链式存储&#xff1a; 二叉树的实现及大小堆…

Logrus日志

目录 一、Logrus 1、Logrus使用 1、下载Logrus第三方库&#xff1a; 2、日志配置文件 3、加载日志配置文件 4、初始化日志记录器 5、在main.go中加载init函数 一、Logrus 日志的重要性及作用 日志是程序的重要组成部分 1.记录用户操作的审计日志 2.快速定位问题的根源…

【计算机视觉】Vision Transformers算法介绍合集(三)

文章目录 一、OODformer二、Colorization Transformer三、MUSIQ四、LeVIT五、Visformer六、Twins-PCPVT七、Conditional Position Encoding Vision Transformer八、Twins-SVT九、Shuffle Transformer十、RegionViT十一、LocalViT十二、EsViT十三、Multi-Heads of Mixed Attenti…

推荐一个页面引导库 driver_js

推荐一个页面引导库 driver.js 页面引导功能是 web 开发中常见的一个功能。通过页面引导功能&#xff0c;你可以让用户第一时间熟悉你的页面功能。今天给大家推荐一个页面引导库 driver.js。 1 简介 driver.js 是一款用原生 js 实现的页面引导库&#xff0c;上手非常简单&am…

远程连接PostgreSQL:配置指南与安全建议

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

UDP/TCP 最大可传输单元细节可不少~

一、MTU 简述 - 分包后数据包最大长度 1、定义 Maximum Transmission Unit&#xff08;最大可传输单元&#xff09; 的缩写&#xff0c;它的单位是字节。在 *数据链路层* 定义 一个数据包穿过一个大的网络&#xff0c;它其间会穿过多个网络&#xff0c;每个网络的 MTU 值是不…

探索Adobe Photoshop 2024:新功能与增强功能详解

Adobe Photoshop 2024&#xff0c;这款传奇的图像编辑软件&#xff0c;近期又迎来了一些令人振奋的新特性。对于专业设计师和摄影爱好者来说&#xff0c;Photoshop 的每次更新都牵动着他们的心。那么&#xff0c;这次的新版本究竟带来了哪些值得我们期待的功能呢&#xff1f;且…

GDB之打印函数堆栈(十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Mysql002:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…