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 开发中,自动化测试、数据抓取和页面分析是常见的需求。Node.js 提供了丰富的工具和库来满足这些需求。本文将介绍两个在 Node.js 中常用的库:Puppeteer 和 Cheerio,它们分别用于…...
Unity2D 关于N方向俯视角 中 角色移动朝向的问题
通常对俯视角2d游戏的角色移动我们使用简单2d混合树的方式,但是其不移动时的朝向该如何定义? 十分简单:移动和不移动之间形成逻辑自锁 详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入,当玩家输…...
pytorch 和tensorflow loss.item()` 只能用于只有一个元素的张量. 防止显存爆炸
loss.item() 是 PyTorch 中的一个方法,它用于从一个只包含单个元素的张量(tensor)中提取出该元素的值,并将其转换为一个 Python 标量(即 int 或 float 类型)。这个方法在训练神经网络时经常用到,…...
链表刷题|判断回文结构
题目来自于牛客网,本文章仅记录学习过程的做题理解,便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边,先得有大概的解决方案,最后如果时间或者空间超了再去优化即可。 思路一:要判断是否为回文结构则…...
海盗王集成网关和商城服务端功能golang版
之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时,发现窗口数量有点多,有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的,是不是可以集成到一起,方便使用呢?…...
SCI 中科院分区中位于4区,JCR分区位于Q2 是什么水平?
环境: 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,还有另外一种叫做mlxup。 NVIDIA 提供了两种固件工具来更新和查询适配器固件: MLXUP - 固件更新和查询实用程序。该实用程序允许扫描服务器计算机以查找可用的 NVIDIA 适配器,并指示每个适配器是否需要…...
《Shader入门精要》透明效果
代码以及实例图可以看github :zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时&…...
Linux之SELinux与防火墙
一、SELinux的说明 开发背景与目的: SELinux由美国国家安全局(NSA)开发,旨在避免资源的误用。传统的Linux基于自主访问控制(DAC),通过判断进程所有者/用户组与文件权限来控制访问,对…...
深度学习使用LSTM实现时间序列预测
大家好,LSTM是一种特殊的循环神经网络(RNN)架构,它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题,特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…...
Vue第一篇:组件模板总结
前言 本文希望读者有一定的Vue开发经验,样例采用vue中的单文件组件,也是我的个人笔记,欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件,<template></template>被称为模板,模板中必须有一个根元素…...
时钟使能、
时钟使能 如果正确使用,时钟使能能够显著地降低系统功耗,同时对面积或性能的影响极小。但是如果不正确地使用时钟使能, 可能会造成下列后果: • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...
1. Autogen官网教程 (Introduction to AutoGen)
why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先,导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...
开源账目和账单
开源竞争: 开源竞争(当你无法彻底掌握技术的时候,你就开源这个技术,让更多的人了解这个技术,形成更多的技术依赖,你会说这不就是在砸罐子吗?一个行业里面总会有人砸罐子,你不如先砸…...
vue2面试题10|[2024-11-24]
问题1:vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...
c语言与c++到底有什么区别?
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于c语言与c区别的相关内容! 关…...
云计算-华为HCIA-学习笔记
笔者今年7月底考取了华为云计算方向的HCIE认证,回顾从IA到IE的学习和项目实战,想整合和分享自己的学习历程,欢迎志同道合的朋友们一起讨论! 第二章:服务器基础 服务器是什么? 服务器本质上就是个性能超强的…...
优先算法 —— 双指针系列 - 复写零
目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作:从左到右(错误) 从右到左 总结一下解决方法: 如何找到最后一个复写的数 特殊情况 完整步骤: 3. 代码 1. 复写零 题目链接:1089. 复写零 - 力…...
初识Linux—— 基本指令(下)
前言: 本篇继续来学习Linux的基础指令,继续加油!!! 本篇文章对于图片即内容详解,已同步到本人gitee:Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat cat 查看文件…...
esayexcel进行模板下载,数据导入,验证不通过,错误信息标注在excel上进行返回下载
场景:普普通通模板下载,加数据导入,分全量和增量,预计20w数据,每一条数据校验,前后端代码贴上(代码有删改,关键代码都有,好朋友们自己取舍,代码一股脑贴上了&…...
2026年一键生成论文工具实测精选:5款神器从构思到提交全流程护航
写论文的焦虑,是每个科研人和学生都无法回避的日常。选题无从下手,文献检索耗时费力,格式排版反复调整,查重降重更是让人抓耳挠腮。到了2026年,AI工具早已不再只是“敲字机器”,而是进化成了能陪你从构思到…...
量子机器学习模型鲁棒性验证:VeriQR工具原理与应用实战
1. 项目概述与核心价值 量子机器学习(QML)正逐渐从理论走向实践,在化学模拟、药物发现、金融建模等领域展现出超越经典算法的潜力。然而,与任何基于数据驱动的模型一样,QML模型也并非“金刚不坏之身”。在当前的 噪声…...
混合量子-经典机器学习在HPC环境下的性能调优与实战
1. 项目概述与核心价值在人工智能和计算科学的前沿,我们正站在一个关键的十字路口。一方面,以卷积神经网络为代表的经典机器学习模型,在处理图像识别、自然语言理解等任务上取得了巨大成功,但其对计算资源的需求正以惊人的速度膨胀…...
Goby新版插件深度解析:PbootCMS 3.1.2远程代码执行漏洞检测与利用
1. 这个Goby插件更新不是“打补丁”,而是给红队装了一把新钥匙你有没有遇到过这样的情况:扫出一台PbootCMS站点,版本号赫然写着3.1.2,Goby却只标了个“中危”甚至不报——结果手工验证时,一个POST请求就弹出了shell&am…...
在openclaw中配置taotoken作为默认模型供应商的详细步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在OpenClaw中配置Taotoken作为默认模型供应商的详细步骤 OpenClaw 是一款功能强大的 AI 智能体开发工具,它允许开发者灵…...
B站视频策划效率提升300%的ChatGPT实战手册(含18个领域专属Prompt库+自动打标/分镜/口播时长优化工具链)
更多请点击: https://intelliparadigm.com 第一章:B站视频策划的AI范式迁移与效能革命 传统B站视频策划高度依赖人工选题、脚本撰写与热点预判,响应周期长、个性化不足、数据洞察滞后。随着多模态大模型与垂类Agent技术成熟,策划…...
火狐浏览器配置Burp Suite抓包完全指南
1. 为什么火狐浏览器在Burp Suite里“抓不到包”?——不是工具不行,是链路断了很多人第一次用Burp Suite配火狐时,点开Proxy → Intercept is on,浏览器照常访问网站,但Burp的HTTP History里空空如也。刷新十次、重启三…...
英雄联盟智能助手:League Akari 的5大核心功能深度解析
英雄联盟智能助手:League Akari 的5大核心功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari 是一款基于英…...
响应安全规程硬性要求,无感定位规范井下人员管理 ——矿山合规化人员智能管控技术方案
响应安全规程硬性要求,无感定位规范井下人员管理——矿山合规化人员智能管控技术方案一、方案引言国家矿山安全相关规程规范、地方煤炭行业监管条例,对井下人员在岗管控、动态监测、危险行为约束、应急人员统计等方面划定明确硬性执行标准。历次安全检查…...
数据分析智能体:推荐2026-05-19 17:33字号
SmartHey5月19日消息,腾讯云今日正式发布大数据智能体工作台——DataBuddy。用户仅需通过自然语言对话,即可一站式完成数据接入、开发、治理与分析等全链路任务,无需在多个系统页面间跳转。一句话明确目标,Agent自动拆解、规划并执…...
