Puppeteer for JavaScript (Node.js): 完整指南及示例
\n\n1. 什么是 Puppeteer 及其用途
\nPuppeteer 是一个 Node.js 库,它通过 DevTools 协议提供高级 API 来控制 Chrome(或 Chromium)浏览器。默认情况下,Puppeteer 以无头模式运行(无图形界面),这使其成为在服务器端自动化 Web 任务的理想工具。不过,在需要时,也可以启动带有界面的完整浏览器进行调试。
\nPuppeteer 的主要使用场景包括:网页抓取(从使用 JavaScript 的动态网站提取数据)、Web 应用程序自动化测试(端到端测试)、生成页面截图和 PDF、模拟用户操作(点击、填写表单、导航),以及 网页性能监控。与简单的 HTTP 请求不同,Puppeteer 会执行页面上的 JavaScript,从而可以获取动态生成的内容。
\n该库由 Google 团队积极维护,并被数千家公司用于生产环境。Puppeteer 提供对浏览器的完全控制:从管理标签页和拦截网络请求,到模拟移动设备和地理位置。它是一个通用工具,可以替代一套用于处理 Web 内容的实用程序。
\n2. 安装
\n要通过 npm(Node 包管理器)安装 Puppeteer,请在项目根目录的终端中执行以下命令:
\nnpm install puppeteer\n 此命令将下载库本身,并自动下载兼容版本的 Chromium(约 300-400 MB)。如果您想使用系统中已安装的 Chrome/Chromium,请安装 puppeteer-core:
npm install puppeteer-core\n 使用 puppeteer-core 时,您需要在启动时指定浏览器可执行文件的路径。使用该库需要 Node.js 18.0.0 或更高版本(建议使用 LTS 版本)。
3. 快速入门 — 最小工作示例
\n创建一个文件 example.js 并添加以下代码,该代码将截取网页截图:
const puppeteer = require('puppeteer');\n\n(async () => {\n // 启动浏览器\n const browser = await puppeteer.launch();\n // 打开新页面\n const page = await browser.newPage();\n // 导航到网站\n await page.goto('https://example.com');\n // 截取截图\n await page.screenshot({ path: 'example.png' });\n // 关闭浏览器\n await browser.close();\n})();\n 使用命令 node example.js 运行脚本。文件夹中将出现一个文件 example.png,其中包含 example.com 页面的截图。这是一个最小但功能完整的浏览器自动化示例。
4. 主要方法/函数/类
\n以下是 Puppeteer 的 8 个关键方法和类,包含描述和代码示例。
\n\n4.1. puppeteer.launch()
\n 签名: puppeteer.launch([options]) → Promise<Browser>
功能: 启动一个 Chromium/Chrome 浏览器实例。接受一个选项对象(headless、slowMo、args 等)。返回一个 Browser 对象。
\nconst browser = await puppeteer.launch({\n headless: false, // 显示浏览器\n slowMo: 100, // 操作延迟(毫秒)\n a