使用htmlunit获取HTML页面

时间:2016-08-05 13:50:12

标签: java htmlunit

我正在尝试获取网站的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);
            }
        }
    }

代码有问题吗?感谢

3 个答案:

答案 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();
}

有用的网址