【问题标题】:Which one of the headless browse do i choose?我选择哪一种无头浏览器?
【发布时间】:2019-11-20 03:51:08
【问题描述】:

我们在前几天使用 phantomjs 来使用服务器端 Prince 工具生成 pdf。现在我们喜欢将无头浏览器从 phantomjs 更改为另一个。

我研究了哪个可以快速渲染 phantomjs 和 puppeteer。在我的情况下,生成 PDF 的报告应用程序,只有我使用 puppeteer 和 phantomjs 对其进行测试。 phantomjs 比 puppeteer 快速处理 HTML。

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

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

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

  • 此选项与其他两个无头浏览器工具(phantomjs、puppeteer)有何不同?
  • 我可以使用哪个工具生成 pdf?

【问题讨论】:

    标签: node.js phantomjs pdf-generation puppeteer google-chrome-headless


    【解决方案1】:

    以下是这些工具的作用,

    • phantomJS 是一个可编写脚本的 Headless WebKit。类似于铬浏览器。 已弃用,项目已存档。
    • chromium:Chromium 是 Google 的开源网络浏览器项目。它本身就是一个功能齐全的浏览器,并为 Google Chrome 浏览器提供绝大多数代码。
    • chromium-headless:无头 Chrome 在 Chrome 59 中发布。这是在无头环境中运行 Chrome 浏览器的一种方式。本质上,在没有 chrome 的情况下运行 Chrome!它将 Chromium 和 Blink 渲染引擎提供的所有现代 Web 平台功能引入命令行。
    • Puppeteer:Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。 Puppeteer 默认运行无头,但可以配置为运行完整(非无头)Chrome 或 Chromium。

    您可以使用 puppeteer 控制铬和无头铬的实例。当然,它允许您提供参数并使用该 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();
    })();
    

    【讨论】:

    • 谢谢阿布·塔赫博士。我在 puppeteer 中测试过。在我的例子中,puppeteer 渲染 HTML 很慢。
    • 我的机器中已经安装了 Google chrome 浏览器。当我安装 puppeteer 时,它会自动下载 Chromium。有没有办法在 puppeteer 中将铬替换为谷歌铬?或者如何在 node 包中使用 google-chrome?
    • 我发现nodejs模块chrome-launcher。它使用我系统中现有的 chrome 应用程序以无头模式运行
    • 是否可以在没有 puppeteer 的情况下针对 headless chromium 运行脚本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2019-07-08
    • 2012-04-11
    • 2018-03-16
    相关资源
    最近更新 更多