什么是 @kamilmac/puppeteer?
@kamilmac/puppeteer 是一个基于 Google Chrome Headless 的 Node.js 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。这个库可以让你创建自动化测试、爬取网站数据、生成 PDF 以及进行各种其他的网站操作。
如何安装 @kamilmac/puppeteer?
你可以通过 npm 直接安装 @kamilmac/puppeteer:
npm install @kamilmac/puppeteer
如何使用 @kamilmac/puppeteer?
首先,我们需要引入 puppeteer:
const puppeteer = require('@kamilmac/puppeteer');
然后,我们就可以使用 puppeteer 来创建一个 Headless Chrome 实例了:
const browser = await puppeteer.launch();
现在我们就可以创建一个新的页面,并跳转到一个网址:
const page = await browser.newPage(); await page.goto('https://www.baidu.com/');
然后我们可以使用 puppeteer 的一些函数来操作我们的页面了。比如说,我们可以截屏并保存到本地:
await page.screenshot({path: 'screenshot.png'});
我们也可以执行简单的自动化测试,比如说检查页面的标题:
const title = await page.title(); expect(title).toBe('百度一下,你就知道');
@kamilmac/puppeteer 常用 API
puppeteer.launch([options])
通过这个 API,我们可以创建一个 Headless Chrome 实例,同时也可以通过可选的参数来设置一些 Chrome 实例的启动配置,比如说是否以 headless 模式启动、是否禁用 GPU,等等。
const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] });
browser.newPage()
创建一个新的页面实例,并返回一个 Page 对象,这个对象就是我们操作网页的主要接口。
const page = await browser.newPage();
page.goto(url[, options])
跳转到指定的网址,可以通过可选的参数来控制一些行为,比如说超时时间、是否等待页面加载完再继续执行,等等。
await page.goto('https://www.baidu.com/', {waitUntil: 'networkidle2'});
page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
等待指定的元素或函数或时间在页面上出现,并返回对应的元素或函数返回值。
const elementHandle = await page.waitFor('body');
page.$(selector)
通过选择器获取对应的页面元素,返回的是一个 ElementHandle 对象,我们可以使用 ElementHandle 提供的一些方法来操作这个元素。
const elementHandle = await page.$('#input');
page.$$eval(selector, pageFunction[, ...args])
通过选择器获取所有匹配的页面元素,并执行传入的函数,返回函数返回值。这个函数可以用于执行一些简单的网页数据抓取。
const list = await page.$$eval('.item', items => { return items.map(item => item.textContent); });
总结
@kamilmac/puppeteer 是一个非常强大的前端自动化测试和网页爬取工具,它提供了丰富的 API 和完整的 Headless Chrome 集成,使得我们可以快速编写高效的自动化测试和网页爬取脚本。
希望这篇文章对你有所帮助!如果你对本文中的示例代码感兴趣,可以在自己的项目中尝试一下,相信你也会发现更多有趣的用法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005672a81e8991b448e3ab9