一、介绍

Jsoup 是一个流行的 Java HTML 解析器,它主要用于用于从 Web 页面中提取并解析 HTML 数据。它提供了一种简单而优雅的方式,使得开发人员可以快速解析 HTML 并从中提取数据。

二、特性

1. 遵循 HTML5 标准。

2. 解析速度快,灵活性强。

3. API 易于使用,并提供了丰富的文档。

4. 可以直接从UTL、文件或字符串中获取 HTML 内容。

三、原理

Jsoup 解析 HTML 的原理是先将 HTML 文件转换成一个 Document 对象,然后使用类似于 jQuery 的 API,通过选择器语法来读取或操作 HTML。Jsoup 会根据要求从文档中查找元素或属性,并提取所需的内容。

四、使用场景

1. 爬取网页数据

2. 分析和处理 HTML 文档

3. 抓取数据并进行处理

五、注意事项

1. Jsoup 的 API 只能用于解析 HTML,不能解析 XML 文档。

2. 解析过程中出现异常时,需要使用异常处理机制来避免程序异常中止。

3. 在解析之前,需要确认所解析的文档是否是一份合法正确的 HTML 文档。

六、实际场景

1. 案例一

    (1) 场景

    使用Jsoup进行网络爬虫的示例。该示例用于爬起博客文章内容。

    (2) 代码

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

/**
 * 使用Jsoup爬取一个简单页面
 *
 * @author wxy
 * @since 2023-05-31
 */
public class JsoupCase1 {
    public static void main(String[] args) throws IOException {
        Document document = Jsoup
                .connect("https://blog.51cto.com/u_15898747/6107276")
                .get();

        // 获取文章标题
        Elements title = document
                .select("div[class=title]>h1");
        System.out.println("文章标题: ");
        // 打印文章标题文本内容
        System.out.println(title.text());

        // 获取文章内容
        Elements contents = document
                .select("div[id=container]");
        System.out.println("文章内容: ");
        for (Element content : contents) {
            for (Element element : content.children()) {
                // 打印内容标签中的文本内容
                System.out.println(element.text());
            }
        }
    }
}

    爬取结果如下:

优雅地解析HTML文档-Jsoup_爬虫