当前位置: 首页 > news >正文

Puppeteer 和 Cheerio 在 Node.js 中的应用

Puppeteer 和 Cheerio 在 Node.js 中的应用

引言

在现代 Web 开发中,自动化测试、数据抓取和页面分析是常见的需求。Node.js 提供了丰富的工具和库来满足这些需求。本文将介绍两个在 Node.js 中常用的库:Puppeteer 和 Cheerio,它们分别用于浏览器自动化和 HTML 解析。

一、Puppeteer:浏览器自动化工具
1.1 什么是 Puppeteer?

Puppeteer 是一个 Node.js 库,提供了一个高级 API 来控制无头 Chrome 或 Chromium 浏览器。它主要用于自动化浏览器操作,如页面导航、表单提交、截图、生成 PDF 等。

1.2 Puppeteer 的主要功能
  • 浏览器自动化:可以模拟用户在浏览器中的操作,如点击、输入、滚动等。
  • 页面导航:可以导航到指定的 URL,并获取页面的内容。
  • 截图和 PDF 生成:可以对页面进行截图,或将页面内容保存为 PDF。
  • 表单提交:可以自动填写和提交表单。
  • 无头模式:可以在无头模式下运行浏览器,即不显示浏览器界面。
1.3 示例代码
const puppeteer = require('puppeteer');(async () => {const browser = await puppeteer.launch();const page = await browser.newPage();await page.goto('https://example.com');const content = await page.content();console.log(content);await browser.close();
})();

在这个示例中,我们使用 Puppeteer 启动了一个无头浏览器,导航到 https://example.com,并获取了页面的 HTML 内容。

二、Cheerio:服务器端的 jQuery
2.1 什么是 Cheerio?

Cheerio 是一个轻量级的库,实现了 jQuery 的核心功能,专门用于解析和操作 HTML 文档。它非常适合用于服务器端的数据提取和操作。

2.2 Cheerio 的主要功能
  • HTML 解析:可以将 HTML 字符串解析为 DOM 树。
  • 选择器:支持类似于 jQuery 的选择器语法,可以方便地选择和操作 DOM 元素。
  • 数据提取:可以从 HTML 中提取所需的数据。
  • DOM 操作:可以对 DOM 元素进行增删改查操作。
2.3 示例代码
const cheerio = require('cheerio');
const html = '<ul id="fruits"><li class="apple">Apple</li><li class="orange">Orange</li><li class="pear">Pear</li></ul>';const $ = cheerio.load(html);const fruits = [];
$('li').each((index, element) => {fruits.push($(element).text());
});console.log(fruits); // 输出: [ 'Apple', 'Orange', 'Pear' ]

在这个示例中,我们使用 Cheerio 解析了一个 HTML 字符串,并提取了所有 <li> 元素的文本内容。

三、结合使用 Puppeteer 和 Cheerio

在实际应用中,Puppeteer 和 Cheerio 经常结合使用。Puppeteer 用于获取页面的动态内容,而 Cheerio 用于解析和提取数据。

3.1 示例代码
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');(async () => {const browser = await puppeteer.launch();const page = await browser.newPage();await page.goto('https://example.com');const content = await page.content();const $ = cheerio.load(content);const titles = [];$('h1').each((index, element) => {titles.push($(element).text());});console.log(titles);await browser.close();
})();

在这个示例中,我们首先使用 Puppeteer 获取页面的 HTML 内容,然后使用 Cheerio 解析 HTML 并提取所有 <h1> 元素的文本内容。

四、总结

Puppeteer 和 Cheerio 是两个功能强大的 Node.js 库,分别用于浏览器自动化和 HTML 解析。Puppeteer 可以模拟用户在浏览器中的操作,获取动态生成的页面内容;而 Cheerio 则提供了类似于 jQuery 的 API,方便地解析和操作 HTML 文档。通过结合使用这两个库,我们可以轻松实现复杂的 Web 自动化任务和数据抓取任务。

五、参考资料
  • Puppeteer 官方文档
  • Cheerio 官方文档

相关文章:

Puppeteer 和 Cheerio 在 Node.js 中的应用

Puppeteer 和 Cheerio 在 Node.js 中的应用 引言 在现代 Web 开发中&#xff0c;自动化测试、数据抓取和页面分析是常见的需求。Node.js 提供了丰富的工具和库来满足这些需求。本文将介绍两个在 Node.js 中常用的库&#xff1a;Puppeteer 和 Cheerio&#xff0c;它们分别用于…...

Unity2D 关于N方向俯视角 中 角色移动朝向的问题

通常对俯视角2d游戏的角色移动我们使用简单2d混合树的方式,但是其不移动时的朝向该如何定义&#xff1f; 十分简单&#xff1a;移动和不移动之间形成逻辑自锁 详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入&#xff0c;当玩家输…...

pytorch 和tensorflow loss.item()` 只能用于只有一个元素的张量. 防止显存爆炸

loss.item() 是 PyTorch 中的一个方法&#xff0c;它用于从一个只包含单个元素的张量&#xff08;tensor&#xff09;中提取出该元素的值&#xff0c;并将其转换为一个 Python 标量&#xff08;即 int 或 float 类型&#xff09;。这个方法在训练神经网络时经常用到&#xff0c…...

链表刷题|判断回文结构

题目来自于牛客网&#xff0c;本文章仅记录学习过程的做题理解&#xff0c;便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边&#xff0c;先得有大概的解决方案&#xff0c;最后如果时间或者空间超了再去优化即可。 思路一&#xff1a;要判断是否为回文结构则…...

海盗王集成网关和商城服务端功能golang版

之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时&#xff0c;发现窗口数量有点多&#xff0c;有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的&#xff0c;是不是可以集成到一起&#xff0c;方便使用呢&#xff1f;…...

SCI 中科院分区中位于4区,JCR分区位于Q2 是什么水平?

环境&#xff1a; ACM Transactions on Interactive Intelligent Systems 《Acm Transactions On Interactive Intelligent Systems》(《交互式智能系统上的 Acm 事务》)是一本由ASSOC COMPUTING MACHINERY (ACM)出版的Computer Interaction-Computer Science-Human学术刊物&…...

微知-Mellanox网卡的另外一种升级方式mlxup?(mlxup -d xxx -i xxx.bin)

背景 一般升级Mellanox网卡使用flint&#xff0c;还有另外一种叫做mlxup。 NVIDIA 提供了两种固件工具来更新和查询适配器固件&#xff1a; MLXUP - 固件更新和查询实用程序。该实用程序允许扫描服务器计算机以查找可用的 NVIDIA 适配器&#xff0c;并指示每个适配器是否需要…...

《Shader入门精要》透明效果

代码以及实例图可以看github &#xff1a;zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果&#xff0c;通常会在渲染模型时控制它的透明通道&#xff08;Alpha Channel&#xff09;​。当开启透明混合后&#xff0c;当一个物体被渲染到屏幕上时&…...

Linux之SELinux与防火墙

一、SELinux的说明 开发背景与目的&#xff1a; SELinux由美国国家安全局&#xff08;NSA&#xff09;开发&#xff0c;旨在避免资源的误用。传统的Linux基于自主访问控制&#xff08;DAC&#xff09;&#xff0c;通过判断进程所有者/用户组与文件权限来控制访问&#xff0c;对…...

深度学习使用LSTM实现时间序列预测

大家好&#xff0c;LSTM是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题&#xff0c;特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…...

Vue第一篇:组件模板总结

前言 本文希望读者有一定的Vue开发经验&#xff0c;样例采用vue中的单文件组件&#xff0c;也是我的个人笔记&#xff0c;欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件&#xff0c;<template></template>被称为模板&#xff0c;模板中必须有一个根元素…...

时钟使能、

时钟使能 如果正确使用&#xff0c;时钟使能能够显著地降低系统功耗&#xff0c;同时对面积或性能的影响极小。但是如果不正确地使用时钟使能&#xff0c; 可能会造成下列后果&#xff1a; • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...

1. Autogen官网教程 (Introduction to AutoGen)

why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先&#xff0c;导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...

开源账目和账单

开源竞争&#xff1a; 开源竞争&#xff08;当你无法彻底掌握技术的时候&#xff0c;你就开源这个技术&#xff0c;让更多的人了解这个技术&#xff0c;形成更多的技术依赖&#xff0c;你会说这不就是在砸罐子吗&#xff1f;一个行业里面总会有人砸罐子&#xff0c;你不如先砸…...

vue2面试题10|[2024-11-24]

问题1&#xff1a;vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上&#xff0c;你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...

c语言与c++到底有什么区别?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于c语言与c区别的相关内容&#xff01; 关…...

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第二章&#xff1a;服务器基础 服务器是什么&#xff1f; 服务器本质上就是个性能超强的…...

优先算法 —— 双指针系列 - 复写零

目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作&#xff1a;从左到右&#xff08;错误&#xff09; 从右到左 总结一下解决方法&#xff1a; 如何找到最后一个复写的数 特殊情况 完整步骤&#xff1a; 3. 代码 1. 复写零 题目链接&#xff1a;1089. 复写零 - 力…...

初识Linux—— 基本指令(下)

前言&#xff1a; 本篇继续来学习Linux的基础指令&#xff0c;继续加油&#xff01;&#xff01;&#xff01; 本篇文章对于图片即内容详解&#xff0c;已同步到本人gitee&#xff1a;Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…...

esayexcel进行模板下载,数据导入,验证不通过,错误信息标注在excel上进行返回下载

场景&#xff1a;普普通通模板下载&#xff0c;加数据导入&#xff0c;分全量和增量&#xff0c;预计20w数据&#xff0c;每一条数据校验&#xff0c;前后端代码贴上&#xff08;代码有删改&#xff0c;关键代码都有&#xff0c;好朋友们自己取舍&#xff0c;代码一股脑贴上了&…...

2026年一键生成论文工具实测精选:5款神器从构思到提交全流程护航

写论文的焦虑&#xff0c;是每个科研人和学生都无法回避的日常。选题无从下手&#xff0c;文献检索耗时费力&#xff0c;格式排版反复调整&#xff0c;查重降重更是让人抓耳挠腮。到了2026年&#xff0c;AI工具早已不再只是“敲字机器”&#xff0c;而是进化成了能陪你从构思到…...

量子机器学习模型鲁棒性验证:VeriQR工具原理与应用实战

1. 项目概述与核心价值 量子机器学习&#xff08;QML&#xff09;正逐渐从理论走向实践&#xff0c;在化学模拟、药物发现、金融建模等领域展现出超越经典算法的潜力。然而&#xff0c;与任何基于数据驱动的模型一样&#xff0c;QML模型也并非“金刚不坏之身”。在当前的 噪声…...

混合量子-经典机器学习在HPC环境下的性能调优与实战

1. 项目概述与核心价值在人工智能和计算科学的前沿&#xff0c;我们正站在一个关键的十字路口。一方面&#xff0c;以卷积神经网络为代表的经典机器学习模型&#xff0c;在处理图像识别、自然语言理解等任务上取得了巨大成功&#xff0c;但其对计算资源的需求正以惊人的速度膨胀…...

Goby新版插件深度解析:PbootCMS 3.1.2远程代码执行漏洞检测与利用

1. 这个Goby插件更新不是“打补丁”&#xff0c;而是给红队装了一把新钥匙你有没有遇到过这样的情况&#xff1a;扫出一台PbootCMS站点&#xff0c;版本号赫然写着3.1.2&#xff0c;Goby却只标了个“中危”甚至不报——结果手工验证时&#xff0c;一个POST请求就弹出了shell&am…...

在openclaw中配置taotoken作为默认模型供应商的详细步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw中配置Taotoken作为默认模型供应商的详细步骤 OpenClaw 是一款功能强大的 AI 智能体开发工具&#xff0c;它允许开发者灵…...

B站视频策划效率提升300%的ChatGPT实战手册(含18个领域专属Prompt库+自动打标/分镜/口播时长优化工具链)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;B站视频策划的AI范式迁移与效能革命 传统B站视频策划高度依赖人工选题、脚本撰写与热点预判&#xff0c;响应周期长、个性化不足、数据洞察滞后。随着多模态大模型与垂类Agent技术成熟&#xff0c;策划…...

火狐浏览器配置Burp Suite抓包完全指南

1. 为什么火狐浏览器在Burp Suite里“抓不到包”&#xff1f;——不是工具不行&#xff0c;是链路断了很多人第一次用Burp Suite配火狐时&#xff0c;点开Proxy → Intercept is on&#xff0c;浏览器照常访问网站&#xff0c;但Burp的HTTP History里空空如也。刷新十次、重启三…...

英雄联盟智能助手:League Akari 的5大核心功能深度解析

英雄联盟智能助手&#xff1a;League Akari 的5大核心功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari 是一款基于英…...

响应安全规程硬性要求,无感定位规范井下人员管理 ——矿山合规化人员智能管控技术方案

响应安全规程硬性要求&#xff0c;无感定位规范井下人员管理——矿山合规化人员智能管控技术方案一、方案引言国家矿山安全相关规程规范、地方煤炭行业监管条例&#xff0c;对井下人员在岗管控、动态监测、危险行为约束、应急人员统计等方面划定明确硬性执行标准。历次安全检查…...

数据分析智能体:推荐2026-05-19 17:33字号

SmartHey5月19日消息&#xff0c;腾讯云今日正式发布大数据智能体工作台——DataBuddy。用户仅需通过自然语言对话&#xff0c;即可一站式完成数据接入、开发、治理与分析等全链路任务&#xff0c;无需在多个系统页面间跳转。一句话明确目标&#xff0c;Agent自动拆解、规划并执…...