用于离线呈现网页的Java(或任何lang)库?

5 java browser

我正在开发一个java应用程序.我有拍摄进入服务器的URL的屏幕截图.

是否有任何java(或任何lang)浏览器库来加载网页并获取加载页面的一些屏幕截图.如果lib允许DOM遍历会很好.


更新:

java(or any lang):任何其他语言都不是问题,但库应该与java合作.

我试图设置 Qt Jambi并花费了大量时间,但结果却一无所获.如果您提供任何具体材料来设置Jambi,那将是值得赞赏的.

我也尝试过spynner.py.我的母语是Java,我认为我可以使用spynner.pyJython.但是,PyQt不能用Jython.所以,我不期待任何相关的答案Python.


基本上,我需要一个库来做:

  • 拍摄屏幕截图.

  • 一些DOM遍历.

  • 一些Javascript执行.

  • 并获得Executed JS代码的结果.

谢谢.


我很感谢所有的回复.我结束了phantomjs.它非常适合我的需求.它是一个命令行工具.

Pab*_*jim 7

Selenium/Webdriver提供所有这些功能.

Webdriver提供了一个简单的api,允许您"驱动"浏览器实例.支持许多浏览器.

请看这里一个简单的例子:

http://seleniumhq.org/docs/03_webdriver.html#getting-started-with-selenium-webdriver

使用"By"定位器遍历dom:

这里有很好的例子:http://www.qaautomation.net/?p = 388

driver.findElement(By.name("q"));
Run Code Online (Sandbox Code Playgroud)

执行Javascript:

http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_How_do_I_execute_Javascript_directly

WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.title");
Run Code Online (Sandbox Code Playgroud)

截图捕获:

http://seleniumhq.org/docs/04_webdriver_advanced.html#taking-a-screenshot

 File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
Run Code Online (Sandbox Code Playgroud)


San*_*nda 3

在 java 中,您应该阅读以下 stackoverflow 帖子:

编程式 Web 浏览器 Java 库

使用 JavaScript 截取网页屏幕截图?

在 Java 应用程序中嵌入 Web 浏览器


因为你说“或任何语言”:

在 Python 中,你有Spynner

Spynner 是一个用于 Python 的有状态编程 Web 浏览器模块,具有基于 QtWebKit 框架的 Javascript/AJAX 支持。

根据文档,这里有一个小片段:

import spynner

browser = spynner.Browser()
browser.load("http://www.wordreference.com")
browser.runjs("console.log('I can run Javascript!')")
browser.runjs("_jQuery('div').css('border', 'solid red')") # and jQuery!
browser.select("#esen")
browser.fill("input[name=enit]", "hola")
browser.click("input[name=b]")
browser.wait_page_load()
print browser.url, len(browser.html)
browser.close()
Run Code Online (Sandbox Code Playgroud)