-2

我正在研究一种检测我网站上的污损的方法。这个想法是爬取整个网站和每个页面,截取屏幕截图或将网站呈现为图像,并将其与上次检查页面的时间进行比较。

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

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

我已经在 J​​ava 中尝试过以下操作:

  • CssBox,但是渲染不够好(没有JS)
  • Selenium Web 驱动程序,但它太慢了(是时候打开 firefox,显示页面等......)并且没有 GUI 就无法使用

我认为一个解决方案将是一种 Web 引擎的包装器,但我没有找到任何关于它的东西(至少在 Java 中)。有人告诉我 PhantomJS 适合这种需求,对吗?

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

4

4 回答 4

0

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

于 2015-03-17T15:40:24.120 回答
0

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

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

祝你好运。

于 2015-03-17T15:41:25.917 回答
0

如果没有 GUI,可能无法执行此类操作。

如果您对 GUI 和相关的东西不是太紧,您可以使用JavaFX Webview并使用以下代码截取节点的屏幕截图

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

参考:

网页视图#snapshot

SwingFXUtils#fromFXImage

于 2015-03-17T15:41:49.737 回答
0

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

于 2015-03-17T15:37:44.313 回答