2015-03-17 4 views
-2

Я работаю над тем, чтобы обнаружить повреждение на моем сайте. Идея состоит в том, чтобы сканировать весь сайт и каждую страницу, сделать снимок экрана или отобразить веб-сайт в качестве изображения и сравнить его с последним моментом проверки страницы.Создание изображения с веб-страницы

Я ищу способ преобразовать всю веб-страницу (HTML, CSS, JS) в изображение, как скриншот, независимо от того, что язык (но я предпочел бы Java, Python или C#)

Мне нужно, чтобы оно было быстрым и полезным на сервере.

я уже пробовал на следующие в Java:

  • CssBox, но визуализация не достаточно хорошо (не JS)
  • Селен Web Driver, но это слишком медленно (время, чтобы открыть Firefox, показать страницу и т. д.) и не использовать без GUI

Я думаю, что решение будет своего рода оболочкой для веб-движка, но я ничего не нашел об этом (по крайней мере, на Java). Мне сказали, что PhantomJS подойдет для этой потребности, верно?

Идеальный результат должен был бы создать что-то вроде этого: http://www.page2images.com/home

ответ

0

Используйте браузер, который вы можете управлять с помощью скрипта или командной строки опций, таких как phantomjs. В документации приведены примеры создания скриншотов из URL-адресов.

0

Веб-сайт, который вы связали, предлагает хороший API для отдыха, который выполняет эту задачу: это не жизнеспособный вариант для вас?

+0

Это решение не является бесплатным и включает в себя одно соединение для каждой страницы, и у меня есть более 100 сайтов – thibon

0

Selenium - ваш лучший выбор. В зависимости от содержимого вашей страницы (например, JS-библиотек и т. Д.) Это может занять некоторое время, но вы можете автоматизировать это с помощью скрипта, который будет работать через cron. Или используя экран.

Он имеет богатый язык утверждений и симулированных событий мыши, а также способы регрессионного тестирования и/или контроля состояния набора страниц.

Удачи.

0

Без GUI, возможно, невозможно сделать что-то подобное.

Если вы не слишком плотно на GUI и связанных с ними вещей, вы можете использовать JavaFX Webview и сделать скриншот узла, используя следующий код

WritableImage image = webView.snapshot(null, null); 
BufferedImage bufferedImage = SwingFXUtils.fromFXImage(image, null); 
.... 

Ссылки:

WebView#snapshot

SwingFXUtils#fromFXImage

Смежные вопросы