Безголовый браузер node.js с поддержкой скриншотов? - PullRequest
31 голосов
/ 18 августа 2011

Существуют ли какие-нибудь безголовые браузеры для node.js, которые поддерживают выгрузку визуализированной страницы в файл? Я знаю, phantomjs поддерживает рендеринг в файл, но он не работает на node.js. Я знаю, zombie.js - это браузер без заголовка node.js, но он не поддерживает рендеринг в файл.

Ответы [ 6 ]

12 голосов
/ 20 августа 2011

Я сомневаюсь, что вы найдете что-нибудь, что будет работать так же, как фантомы.Я бы просто обработал рендеринг как асинхронный бэкэнд-процесс и выполнил фантом в подпроцессе из вашего основного процесса node.js и назвал его днемРендеринг веб-страницы труден, и, поскольку фантом основан на WebKit, он действительно может это сделать.Я не думаю, что когда-либо будет библиотека узлов, которая может визуализировать веб-страницу в графический файл, который не построен на существующем движке рендеринга браузера.Но, возможно, однажды фантомы будут более легко интегрироваться с узлом.

5 голосов
/ 16 апреля 2016

Попробуйте кошмар , он использует электрон, он намного быстрее, чем фантомы, и его API прост и использует современный ES6 javascript.

3 голосов
/ 24 октября 2011

Вы можете найти это полезным, хотя это не специфично для javascript.

Существует инструмент на основе веб-набора под названием " wkhtmltopdf ", который, как я понимаю, включает поддержку javascript с использованием виджета веб-набора QT. Он выводит визуальное представление («скриншот», если хотите) страницы в формате PDF.

FWIW, здесь также есть PHP-привязки: php-wkthmltox

3 голосов
/ 19 августа 2011

Это может выглядеть как решение с небольшими накладными расходами ...

Вы можете использовать Mozilla Firefox с плагином MozRepl. По сути, этот плагин предоставляет вам порт Telnet для вашего Firefox, который позволяет вам управлять браузером извне. Вы можете открывать URL, делать скриншоты и т. Д. Запуск Firefox с сервером Xvfb запустит его в автономном режиме.

Теперь вам просто нужно управлять браузером извне с помощью node.js. Я видел несколько примеров, когда кто-то реализовал интерфейс, подобный http, внутри chrome.js в Firefox. Таким образом, вы можете запустить команду http, чтобы получить скриншот. Затем вы можете использовать http-вызовы из node.js. Это может выглядеть странно, но на самом деле это может сработать для вас.

Я использую слегка модифицированную версию с Perl Mojolicious в асинхронном режиме, чтобы вызвать скриншоты. Однако есть небольшая проблема. Когда требуются плагины, они работают, однако Flash обычно активируется, когда он находится в видимой области, этого не происходит, поэтому фильмы / флэш-объекты могут не инициализироваться.

1 голос
/ 31 октября 2017

Команда разработчиков Chrome выпустила Кукольник , который можно использовать в узле.Он использует Chrome с опцией без головы .

1 голос
/ 01 июля 2013

Есть проект под названием Node-Chimera.Несмотря на то, что он не так совершенен, как Phantomjs, он имеет все функции, о которых вы упомянули: он работает на нативных Nodejs и позволяет вам отображать страницы в файл.Репозиторий находится здесь: https://github.com/deanmao/node-chimera. В нем есть примеры, чтобы сделать именно то, что вам нужно.

...