如何将Jsoup文档保存为HTML文件?

22
我已经使用以下方法将网页获取为一个org.jsoup.nodes.Document对象: myDoc = Jsoup.connect(myURL).ignoreContentType(true).get(); 我该如何将这个对象写入HTML文件中呢? myDoc.html(), myDoc.text()myDoc.toString()方法无法输出文档的所有元素。
在解析过程中,一些javascript元素中的信息可能会丢失。例如,Instagram媒体页面的源代码中的“timestamp”。

2
当调用 myDoc.html() 时,您缺少哪些元素? - cy3er
当您使用Jsoup获取元素时,可能会删除或解析它们的方式有所不同。 使用白名单来解决这个问题! - Daniel B
@cy3er 我添加了一个示例。在这种情况下,alkis的解决方案有效。 - Ali Khezeli
2个回答

26

使用 doc.outerHtml() 方法。

import org.apache.commons.io.FileUtils;

public void downloadPage() throws Exception {
        final Response response = Jsoup.connect("http://www.example.net").execute();
        final Document doc = response.parse();

        final File f = new File("filename.html");
        FileUtils.writeStringToFile(f, doc.outerHtml(), StandardCharsets.UTF_8);
    }

不要忘记捕获异常。添加依赖项或下载Apache commons-io库,以便轻松快速地将文件保存为UTF-8格式。


8

有些元素被忽略的原因可能是Jsoup试图规范化内容。

如果想要获得服务器的精确输出而不进行任何形式的规范化,请使用以下方法。

Connection.Response html = Jsoup.connect("PUT_URL_HERE").execute();
System.out.println(html.body());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接