Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用htmlunit获取HTML页面_Java_Htmlunit - Fatal编程技术网

Java 使用htmlunit获取HTML页面

Java 使用htmlunit获取HTML页面,java,htmlunit,Java,Htmlunit,我正在尝试获取网站(ex)的HTML页面,但出现了IlleagalArgumentException错误:找不到声明的字段类org.apache.http.impl.client.HttpClientBuilder.dnsResolver。我的代码如下: public class Main1 { public static void main(String[] args) { try { homePage();

我正在尝试获取网站(ex)的HTML页面,但出现了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);
            }
        }
    }
代码有问题吗?谢谢

您可以使用

小代码示例

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();
}
有用的URL


这是违反直觉的,但我们可以在
HtmlPage
HtmlElement
上使用
asXml()
将其作为HTML/XML表示

page.asXml()
按照您编写代码的方式,它将返回一个文本表示形式,该文本表示形式将显示在已使用的浏览器上

您可能需要添加以下内容以启用JavaScript:

webClient.options.setJavaScriptEnabled(true)
IlleagalArgumentException:找不到声明的字段类org.apache.http.impl.client.HttpClientBuilder.dnsResolver

这看起来像是HttpClient依赖项的错误版本。请检查您的类路径,使每个依赖项只有一个(并且只有正确的)版本


对于当前版本,您可以在此处找到依赖项列表

为什么需要获取页面?你想解析它吗?@Tugrul是的,我需要解析它。事实上,我读到htmlunit可以解析页面的html和javascript元素。检查我的建议。看起来不错,最好打印stacktrance以便我们跟踪发生了什么。可能您没有设置浏览器版本,没有设置webClient选项,因此存在错误。Jsoup无法解析Javascript元素,对吗?实际上,我需要的是能够获取包含Javascript的HTML的东西,因此我正在尝试HTMLUniti如果您只需要javascripts,只需使用任何web Scraster应用程序扩展*.js并将文件保存在本地存储中即可。我需要解析真实的和当前的页面,不幸的是,我想要的这个页面是一个单页面应用程序,稍后将通过javascript获取所需的元素。如果我使用的是Jsoup,那么它将只获取背景页面,而不是我想要的当前元素。忘记jsoup吧。你知道如何获取页面的javascript和HTML的xml元素吗?看来也不行