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

问题描述 投票:31回答:6

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

javascript browser node.js headless-browser
6个回答
12
投票

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


5
投票

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


3
投票

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

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

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

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


3
投票

您可能会发现这有用,虽然它不是特定于JavaScript的。

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

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


1
投票

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


1
投票

Chrome开发团队发布了可用于节点的Puppeteer。它使用Chrome和无头选项。

© www.soinside.com 2019 - 2024. All rights reserved.