Administrator
发布于 2025-03-27 / 4 阅读
0

使用 Jsoup 解析 HTML 文本、提取元素和获取数据

#AI

Jsoup 是一个用于处理 HTML 的 Java 库,它能让你以类似于 jQuery 的方式来解析、操作和提取 HTML 数据。下面将详细介绍如何使用 Jsoup 解析 HTML 文本、提取元素和获取数据。

1. 添加依赖

如果你使用的是 Maven 项目,需要在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.16.1</version>
</dependency>

如果你使用的是 Gradle 项目,在 build.gradle 中添加以下依赖:

implementation 'org.jsoup:jsoup:1.16.1'

2. 解析 HTML 文本

你可以使用 Jsoup.parse() 方法来解析 HTML 字符串。示例代码如下:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class HtmlParserExample {
    public static void main(String[] args) {
        String html = "<html><head><title>示例页面</title></head><body><p>这是一个段落。</p></body></html>";
        Document doc = Jsoup.parse(html);
        System.out.println(doc.title());
    }
}

在上述代码中,Jsoup.parse(html) 方法将 HTML 字符串解析为一个 Document 对象,然后可以通过 doc.title() 方法获取页面的标题。

3. 提取元素

Jsoup 提供了多种方法来提取元素,下面是一些常见的方法:

3.1 通过标签名提取元素

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

public class ElementExtractionExample {
    public static void main(String[] args) {
        String html = "<html><body><p>段落1</p><p>段落2</p></body></html>";
        Document doc = Jsoup.parse(html);
        Elements paragraphs = doc.getElementsByTag("p");
        for (Element p : paragraphs) {
            System.out.println(p.text());
        }
    }
}

在上述代码中,doc.getElementsByTag("p") 方法返回一个包含所有 <p> 标签元素的 Elements 对象,然后可以通过遍历该对象来获取每个 <p> 标签的文本内容。

3.2 通过 ID 提取元素

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

public class ElementByIdExample {
    public static void main(String[] args) {
        String html = "<html><body><div id=\"myDiv\">这是一个 div 元素。</div></body></html>";
        Document doc = Jsoup.parse(html);
        Element div = doc.getElementById("myDiv");
        if (div != null) {
            System.out.println(div.text());
        }
    }
}

在上述代码中,doc.getElementById("myDiv") 方法返回一个 Element 对象,该对象表示 ID 为 myDiv 的元素。

3.3 通过 CSS 选择器提取元素

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

public class CssSelectorExample {
    public static void main(String[] args) {
        String html = "<html><body><ul class=\"myList\"><li>列表项1</li><li>列表项2</li></ul></body></html>";
        Document doc = Jsoup.parse(html);
        Elements listItems = doc.select("ul.myList li");
        for (Element li : listItems) {
            System.out.println(li.text());
        }
    }
}

在上述代码中,doc.select("ul.myList li") 方法使用 CSS 选择器来选择所有 <ul> 元素中类名为 myList<li> 元素。

4. 获取元素的数据

一旦你提取到了元素,就可以通过以下方法获取元素的数据:

4.1 获取文本内容

Element element = ...; // 假设已经获取到了一个元素
String text = element.text();

4.2 获取 HTML 内容

Element element = ...; // 假设已经获取到了一个元素
String htmlContent = element.html();

4.3 获取属性值

Element element = ...; // 假设已经获取到了一个元素
String href = element.attr("href");

综上所述,使用 Jsoup 解析 HTML 文本、提取元素和获取数据的步骤如下:

  1. 添加 Jsoup 依赖。
  2. 使用 Jsoup.parse() 方法解析 HTML 文本。
  3. 使用 getElementsByTag()getElementById()select() 方法提取元素。
  4. 使用 text()html()attr() 方法获取元素的数据。