Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来通过 DevTools 协议控制无头 Chrome 或 Chromium。它还可以配置为使用完整(非无头)Chrome 或 Chromium。
核心特性:
-
无头浏览器控制:Puppeteer 可以在无头模式下运行 Chrome,这意味着浏览器界面不会显示,但所有功能仍然可用。
-
页面操作:可以生成页面的屏幕截图和 PDF,抓取 SPA(单页应用)并进行内容爬取。
-
自动化测试:可以模拟用户操作,如点击、输入文本、导航等,非常适合自动化测试。
-
性能分析:可以捕获时间线跟踪,帮助诊断性能问题。
-
网络拦截:可以拦截和修改网络请求,用于测试和调试。
基本使用示例:
javascriptconst puppeteer = require('puppeteer'); (async () => { // 启动浏览器 const browser = await puppeteer.launch(); // 创建新页面 const page = await browser.newPage(); // 导航到指定 URL await page.goto('https://example.com'); // 截图 await page.screenshot({ path: 'example.png' }); // 关闭浏览器 await browser.close(); })();
主要应用场景:
- 网页爬虫:抓取动态渲染的网页内容
- 自动化测试:E2E 测试、UI 测试
- PDF 生成:将网页转换为 PDF 文档
- 性能监控:分析页面加载性能
- 截图服务:批量生成网页截图
与 Selenium 的区别:
- Puppeteer 直接使用 Chrome DevTools 协议,速度更快
- Selenium 支持多种浏览器,Puppeteer 主要支持 Chrome/Chromium
- Puppeteer API 更简洁,学习曲线较低
- Puppeteer 对现代 Web 技术支持更好