Puppeteer 是什么?
puppeteer 是一个由 Google 开发的 Node.js 库,它提供了一组用于控制 Chrome 或 Chromium 浏览器的 API。通过 puppeteer,我们可以在浏览器环境中执行各种操作,例如生成 PDF、截屏、模拟用户行为、爬取数据等。由于 puppeteer 可以控制浏览器,因此它比传统的 Node.js 爬虫更加强大和灵活,也更容易实现一些复杂的功能。在 Electron 应用程序中使用 puppeteer 可以实现强大的爬虫功能,同时还可以将爬虫结果集成到应用程序中,为用户提供更丰富的功能和服务。
实现原理
在Nodejs中集成puppeteer直接参考官网的Demo就可以了,这里不再赘述,下面说一下在Electron中集成puppeteer。
在Electron中集成puppeteer需要用到puppeteer-in-electron这个库。它的原理是在electron.app上开启远程debug,具体代码app.commandLine.appendSwitch('remote-debugging-port', port)
,然后用PuppeteerNode.connect({browserWSEndpoint})
方法连接上这个调试端口实现调试。
官方示例
// 官方的一小段例子
const {BrowserWindow, app} = require("electron");
const pie = require("puppeteer-in-electron")
const puppeteer = require("puppeteer-core");
const main = async () => {
await pie.initialize(app);
const browser = await pie.connect(app, puppeteer);
const window = new BrowserWindow();
const url = "https://example.com/";
await window.loadURL(url);
const page = await pie.getPage(browser, window);
console.log(page.url());
window.destroy();
};
main();