有没有办法在无头模式下运行 QtWebEngine

Posted

技术标签:

【中文标题】有没有办法在无头模式下运行 QtWebEngine【英文标题】:Is there a way to run QtWebEngine in headless mode 【发布时间】:2017-02-13 21:08:13 【问题描述】:

我正在使用 QWebEnginePage 来获取某些网页的内容。在 .pro 文件中我提到了CONFIG-=gui.

但是,当我在无头系统中运行程序时,它抱怨无法连接到 display:0。我还注意到它需要 libX11-xcb.so 和相关的库。

我是否可以在无头模式下使用 QtWebEngine 获取页面的 html 而无需使用 xvfb?

【问题讨论】:

我认为还有其他方法可以在 Qt 中获取网页内容。 @Redanium 我的要求是获取 ajax 站点的 html。所以我一直在寻找一个无头浏览器来执行 javascript 来生成 HTML。请建议是否有任何替代方案 为什么不使用QNetworkAccessManagerQNetworkReply @Redanium 至于我了解这些类,不要在网页中执行 javascript 和 ajax 调用 看看这个Qtwebengine How do I run web engine on a sever without a display?和这个-SOLVED- QtWebEngine headless? 【参考方案1】:

与 QtWebKit(单进程版本)相比,QtWebEngine 占用大量内存。

QtWebkit 无法正确呈现某些网站。 QtWebEngine 需要 Xserver,因此消耗了更多内存。加上多流程设计,即使您只有一个标签

终于切换到puppeteer。 我知道这不是对所发布问题的直接答案。但这解决了在真正无头模式下提取ajax站点的DOM HTML的原始问题。

【讨论】:

【参考方案2】:

“我的要求是获取ajax站点的html。所以我一直在寻找一个无头浏览器来执行javascript来生成HTML。”

蜘蛛可能会满足您的要求。使用 Scrapy 和 Chrome,您可以做任何浏览器可以做的事情。

【讨论】:

以上是关于有没有办法在无头模式下运行 QtWebEngine的主要内容,如果未能解决你的问题,请参考以下文章

无法在无头模式下运行 Firefox

Selenium webdriver 无法在 chrome 无头模式下定位元素

有没有办法在无头机器上使用使用硬件加速 OpenGL 的应用程序?

在无头模式下运行 Chrome

无法在Chrome无头模式下运行测试

JODConverter 出现问题并在无头模式下运行 LibreOffice