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 文本、提取元素和获取数据的步骤如下:
- 添加
Jsoup
依赖。 - 使用
Jsoup.parse()
方法解析 HTML 文本。 - 使用
getElementsByTag()
、getElementById()
或select()
方法提取元素。 - 使用
text()
、html()
或attr()
方法获取元素的数据。