Puppeteer 使用教程
1. 项目介绍
Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。它默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。
2. 项目快速启动
首先,确保你的电脑上安装了 Node.js(版本大于 6.4.0)。然后,通过 npm 安装 Puppeteer:
npm install puppeteer
安装完成后,可以编写一个简单的脚本,用于打开一个页面并截图:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
运行脚本:
node your_script.js
3. 应用案例和最佳实践
- 生成页面 PDF:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.pdf({ path: 'hn.pdf', format: 'A4' });
await browser.close();
})();
- 获取页面尺寸:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const dimensions = await page.evaluate(() => {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
deviceScaleFactor: window.devicePixelRatio,
};
});
console.log('Dimensions:', dimensions);
await browser.close();
})();
- 使用“有头”模式:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
4. 典型生态项目
- jest-puppeteer:一个用于 Jest 的 Puppeteer 集成,使得在 Jest 测试中轻松使用 Puppeteer 功能。
- Puppeteer Recorder:一个浏览器扩展,用于记录 Puppeteer 脚本,无需编写代码即可实现自动化测试。
- Puppeteer Sharp:一个 .NET 库,为 Puppeteer 提供了跨平台支持。
希望这份教程能帮助你入门 Puppeteer,并开始使用它来提高你的工作效率。