这question was asked once already,但我猜测API已经改变了,答案已经无效了。
URL url = new URL("http://www.example.com");
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url);
HtmlPage page = HTMLParser.parseHtml(response, new TopLevelWindow("top", new WebClient()));
System.out.println(page.getTitleText());
无法完成,因为TopLevelWindow受到保护,因为扩展/实现窗口这样的东西很荒谬:)
有人知道怎么做吗?我觉得奇怪的是它不能轻易完成。
答案 0 :(得分:25)
此代码适用于GroovyConsole
@Grapes(
@Grab(group='net.sourceforge.htmlunit', module='htmlunit', version='2.8')
)
import com.gargoylesoftware.htmlunit.*
import com.gargoylesoftware.htmlunit.html.*
URL url = new URL("http://www.example.com");
StringWebResponse response = new StringWebResponse("<html><head><title>Test</title></head><body></body></html>", url);
WebClient client = new WebClient()
HtmlPage page = HTMLParser.parseHtml(response, client.getCurrentWindow());
System.out.println(page.getTitleText());
答案 1 :(得分:0)
使用HTMLUnit 2.40,Grooveek的代码将无法编译,您会收到“无法从HTMLParser类型对非静态方法parseHtml(WebResponse,WebWindow)进行静态引用”。但是现在有一个实现HTMLParser接口的HtmlUnitNekoHtmlParser类,因此以下代码可以正常工作:
StringWebResponse response = new StringWebResponse(
"<html><head><title>Test</title></head><body></body></html>",
new URL("http://www.example.com"));
HtmlPage page = new HtmlUnitNekoHtmlParser().parseHtml(
response, new WebClient().getCurrentWindow());