Существуют ли безглавые браузеры для node.js, которые поддерживают сброс выводимой страницы в файл? Я знаю, phantomjs поддерживает рендеринг в файл, но он не работает на node.js. Я знаю, zombie.js - это браузер без браузера node.js, но он не поддерживает рендеринг в файл.
Безголовый node.js браузер javascript со скриншотом?
Ответ 1
Я сомневаюсь, что вы найдете что-нибудь, что будет работать, а также фантомы. Я бы просто рассматривал рендеринг как процесс async-бэкэнд и выполнял phantom в подпроцессе из вашего основного процесса node.js и называет его днем. Рендеринг веб-страницы HARD, и поскольку phantom основан на WebKit, он действительно может это сделать. Я не думаю, что когда-нибудь будет библиотека node, которая может отображать веб-страницу в графическом файле, который не построен на существующем движке рендеринга браузера. Но, возможно, однажды phantomjs будет более легко интегрироваться с node.
Ответ 2
Попробуйте nightmare, он использует электрон, он намного быстрее, чем phantomjs, и API легко и использует современный JavaScript-код ES6.
Ответ 3
Это может выглядеть как решение с небольшими накладными расходами...
Вы можете использовать Mozilla Firefox с плагином MozRepl. В основном этот плагин предоставляет вам telnet-порт для вашего Firefox, который позволяет вам управлять браузером со стороны. Вы можете открывать URL-адреса, делать скриншоты и т.д. Запуск Firefox с сервером Xvfb запустит его в режиме безглавых.
Теперь вам просто нужно управлять браузером снаружи с помощью node.js. Я видел несколько примеров, когда кто-то реализовал http-подобный интерфейс внутри chrome.js Firefox. Таким образом, вы можете запустить команду http, чтобы получить скриншот. Затем вы можете использовать http-вызовы из node.js. Это может показаться странным, но на самом деле это может сработать для вас.
Я запускаю слегка модифицированную версию в Perl Mojolicious в режиме async для запуска скриншотов. Однако есть небольшая проблема. Когда требуются плагины, они действительно работают, однако Flash обычно активируется, когда он находится в видимой области, этого не произойдет, так что фильмы/флеш файлы могут не инициализироваться.
Ответ 4
Вы можете найти это полезным, хотя это не javascript.
Существует инструмент на основе webkit, называемый wkhtmltopdf ", который, как я понимаю, включает поддержку javascript, используя виджет веб-набора QT. Он выводит визуальное представление (" снимок экрана", если хотите) страницы в формате PDF.
FWIW, здесь есть также привязки PHP: php-wkthmltox
Ответ 5
Есть проект под названием Node -Chimera. Хотя он не настолько зрелый, как Phantomjs, он имеет все функции, о которых вы упоминали: он работает на собственных Nodejs и позволяет отображать страницы в файл. Репозиторий находится здесь: https://github.com/deanmao/node-chimera. В нем есть примеры, чтобы сделать именно то, что вам нужно.
Ответ 6
Команда Chrome dev выпустила Puppeteer, который можно использовать в node. Он использует Chrome с опцией без головок.