Electron + puppeteer 开发爬虫

3,285 阅读1分钟

Puppeteer 是什么?

image.png

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();