从网页创建图像

时间:2015-03-17 15:34:42

标签: java python phantomjs javafx-webengine

我正致力于检测网站上的污损。我们的想法是抓取整个网站和每个页面,截取屏幕截图或将网站渲染为图像,并将其与上次检查页面进行比较。

我正在寻找一种方法将整个网页(HTML,CSS,JS)转换为图像,如截图,无论语言是什么(但我更喜欢Java,Python或C#)

我需要它在服务器上快速且可用。

我已经在Java中尝试了以下内容:

  • CssBox,但渲染不够好(没有JS)
  • Selenium Web Driver,但它的速度太慢(打开firefox的时间,显示页面等等),没有GUI就无法使用

我认为解决方案将是Web引擎的一种包装,但我没有找到任何相关内容(至少在Java中)。我被告知PhantomJS适合这种需要,是不是?

完美的结果是创造类似的东西:http://www.page2images.com/home

4 个答案:

答案 0 :(得分:0)

使用可以通过脚本或命令行选项(如phantomjs)控制的浏览器。该文档包含如何从URL制作屏幕截图的示例。

答案 1 :(得分:0)

您链接的网站提供了一些执行任务的良好休息API:对您来说,这不是一个可行的选择吗?

答案 2 :(得分:0)

Selenium是您最好的选择。根据您的页面内容(即JS库等)可能需要一些时间,但您可以通过脚本自动执行此操作,以便通过cron每晚运行。或使用屏幕。

它具有丰富的断言语言和模拟鼠标事件,以及回归测试和/或监视一组页面状态的方法。

祝你好运。

答案 3 :(得分:0)

没有GUI,可能无法做到这样的事情。

如果您对GUI及相关内容不太紧张,可以使用JavaFX Webview并使用以下代码截取节点的屏幕截图

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

参考文献:

WebView#snapshot

SwingFXUtils#fromFXImage