我正在尝试获取网站的HTML页面(ex http://htmlunit.sourceforge.net)但是我收到了IlleagalArgumentException错误:找不到声明的字段类org.apache.http.impl.client.HttpClientBuilder.dnsResolver。我的代码如下:
public class Main1 {
public static void main(String[] args) {
try {
homePage();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void homePage() throws Exception {
try (final WebClient webClient = new WebClient()) {
final HtmlPage page = webClient.getPage("http://www.google.com");
String text = page.asText();
System.out.println(text);
}
}
}
代码有问题吗?感谢
答案 0 :(得分:0)
这是违反直觉的,但是我们可以在asXml()
或HtmlPage
上使用HtmlElement
来作为HTML / XML表示形式。
page.asXml()
您编写代码的方式,它将返回文本表示形式,该表示形式将显示给浏览器中的用户。
可能需要添加它才能启用JavaScript:
webClient.options.setJavaScriptEnabled(true)
答案 1 :(得分:0)
IlleagalArgumentException:无法找到声明的字段类org.apache.http.impl.client.HttpClientBuilder.dnsResolver
这看起来像是HttpClient依赖项的错误版本。请检查您的类路径,以确保每个依赖项只有一个(并且只有正确的)版本。
对于当前版本,您可以在http://htmlunit.sourceforge.net/dependencies.html
中找到依赖项列表答案 2 :(得分:-1)
您可以使用jsoup parser。
小代码示例
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
高级用法
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
有用的网址