解析和遍历本地html文档

首先再本地创建一个html文件,如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>技术客</title>
    </head>
    <body>
        这是一个简单的HTML
        <p>
            <a href="/doc.html">https://www.sunjs.com</a>
        </p>
    </body>
</html>

保存至本地某个磁盘目录下。

public static void main(String[] args) throws IOException {
    Document doc = Jsoup.parse(new File("/Users/sun/Documents/index.html"), "utf-8", "https://www.baidu.com");
    System.out.println("Title is:"+doc.title());
    System.out.println("Body is:"+doc.body().text()); 
    System.out.println(doc.selectFirst("a").attr("href"));
    System.out.println(doc.selectFirst("a").attr("abs:href"));//abs 方式在后边有详细的讲解
}

输出结果:

Title is:技术客
Body is:这是一个简单的HTML https://www.sunjs.com
/doc.html
https://www.baidu.com/doc.html


parse(File in, String charsetName, String baseUri) 这个方法用来加载和解析一个HTML文件。如在加载文件的时候发生错误,将抛出IOException,应作适当处理。

baseUri 参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。

另外还有一个方法parse(File in, String charsetName) ,它使用文件的路径做为baseUri。 这个方法适用于如果被解析文件位于网站的本地文件系统,且相关链接也指向该文件系统。

parse 类方法一共有以下几种,可以简单的了解以下,其中还包括input流的方式读取解析出 Document


1522846839599081656.png