我选择哪一种无头浏览器?

Which one of the headless browse do i choose?

我们前几天使用phantomjs 与服务器端王子工具生成pdf。现在我们喜欢把无头浏览器从phantomjs换成另一个。

我正在研究哪个可以快速渲染 phantomjs 和 puppeteer。在我的例子中,报告应用程序生成 PDF,只有我用 puppeteer 和 phantomjs 测试它。 phantomjs 快速处理 HTML 与 puppeteer 相比。

然后我学习 google-chrome-headless 选项来生成 PDF。它看起来像一个 Chrome 浏览器 GUI 应用程序内置模块。我正在使用 nodejs 应用程序。我从命令行使用以下命令

chrome --headless --disable-gpu --print-to-pdf <src_url>

我注意到 --disable-gpu 选项,其他工具没有。

以下是这些工具的作用,

  • phantomJS 是一个可编写脚本的 Headless WebKit。类似于铬浏览器。 已弃用,项目已存档。
  • chromium:Chromium 是 Google 的 open-source 网络浏览器项目。它本身就是一个功能齐全的浏览器,并为 Google Chrome 浏览器提供绝大多数代码。
  • chromium-headless:Headless Chrome 正在 Chrome 59 发货。这是 运行 [=49] 的一种方式=] 无头环境中的浏览器。本质上,运行宁 Chrome 没有 chrome!它将 Chromium 和 Blink 渲染引擎提供的所有现代网络平台功能带到命令行。
  • Puppeteer:Puppeteer 是一个节点库,它提供 high-level API 来通过 DevTools 协议控制 Chrome 或 Chromium。 Puppeteer 运行 默认无头,但可以配置为 运行 完整 (non-headless) Chrome 或 Chromium。

您可以使用 puppeteer 控制 chromium 和 chromium headless 实例。当然,它允许您提供参数并使用 API.

生成 PDF

您可以使用 Chrome CLI 和 Puppeteer 控制相同的 API。

以下是如何使用 chromium headless 生成网站的 pdf。

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/

这里使用 puppeteer 也是一样的,

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.chromestatus.com/');
  await page.pdf({path: 'chromestatus.pdf', format: 'A4'});
  await browser.close();
})();