无头node.js javascript浏览器具有截屏功能?

时间:2011-08-18 13:34:18

标签: javascript browser node.js headless-browser

是否有任何无头浏览器支持将呈现的页面转储到文件中的node.js?我知道phantomjs支持渲染到文件,但它不在node.js上运行。我知道zombie.js是一个node.js无头浏览器,但它不支持渲染到文件。

6 个答案:

答案 0 :(得分:12)

我怀疑你会发现任何与phantomjs一样有用的东西。我只是将渲染视为异步后端进程,并在主node.js进程的子进程中执行幻像并将其调用一天。渲染网页很难,因为幻像基于WebKit,它实际上可以做到。我认为永远不会有一个节点库可以将网页呈现为不是在现有浏览器呈现引擎上构建的图形文件。但是也许有一天phantomjs会更加无缝地与节点集成。

答案 1 :(得分:5)

尝试nightmare,它使用电子,它比phantomjs快,并且它的API很容易并使用现代的ES6 javascript。

答案 2 :(得分:3)

这可能看起来像一个有点开销的解决方案......

您可以将Mozilla Firefox与MozRepl插件一起使用。基本上这个插件为您提供了一个到您的Firefox的telnet端口,允许您从外部控制浏览器。您可以打开网址,截取屏幕截图等。 使用Xvfb服务器运行Firefox将以无头模式运行它。

现在你只需要使用node.js从外部控制浏览器。我已经看到一些例子,其中有人在Fi​​refox的chrome.js中实现了一个http相似的界面。因此,您可以运行http命令来获取屏幕截图。然后,您可以使用node.js的http调用。这可能看起来很奇怪,实际上它可能对您有用。

我在生产中使用Perl Mojolicious在异步模式下运行稍微修改过的版本来触发屏幕截图。但是,存在一个小问题。当需要插件时它们可以正常工作,但是当Flash处于可见区域时,它通常会被激活,这不会发生,因此电影/闪光灯可能无法初始化。

答案 3 :(得分:3)

你可能会觉得这很有帮助,虽然它不是特定于javascript的。

有一个名为“wkhtmltopdf”的基于webkit的工具,我理解包括使用QT web-kit小部件的javascript支持。它以PDF格式输出页面的可视化表示(如果你愿意,“截图”)。

FWIW,这里还有PHP绑定:php-wkthmltox

答案 4 :(得分:1)

有一个名为Node-Chimera的项目。虽然它没有Phantomjs那么成熟,但它具有您提到的所有功能:它在本机Nodej上运行,并允许您将页面呈现到文件中。存储库在这里:https://github.com/deanmao/node-chimera。它有一些例子可以完全满足你的需要。

答案 5 :(得分:1)

Chrome开发团队发布了Puppeteer,可以在节点中使用。它使用Chrome和无头选项。