Jsoup Java 教程:HTML 解析完全指南
1. 什么是 Jsoup?为什么需要它?
Jsoup 是一个功能强大且易于使用的 Java 开源库,专门用于解析、提取和操作 HTML 文档。它为开发者提供了简洁直观的 API,让你像在浏览器中操作 DOM 树一样轻松处理 HTML。如果你曾经为了从网页中提取数据而编写正则表达式,就会知道那种方案是多么脆弱且难以维护。Jsoup 通过提供可靠而灵活的工具,完美解决了这个问题。
Jsoup 的核心功能是 HTML 解析。它可以接收字符串、URL 或文件作为输入,并将其转换为文档对象模型(DOM)。之后,你可以使用 CSS 选择器(类似 jQuery)或 DOM 树遍历来查找和提取特定元素、它们的属性以及文本内容。此外,Jsoup 还能清理 HTML 中的潜在危险元素(例如 XSS 攻击),并支持文档修改:添加、删除或更改标签及其内容。
为什么需要它?Jsoup 的应用场景非常广泛:从编写简单的数据采集爬虫和价格监控,到构建复杂的内容分析系统、Web 应用测试以及与 CMS 集成。Jsoup 是 Java 世界中处理 HTML 的事实标准,对于任何涉及 Web 技术的 Java 开发者来说,掌握它都是必备技能。
2. Jsoup 安装方法
Jsoup 以 JAR 文件形式分发,但最简便的方式是通过构建工具引入。以下是 Maven 和 Gradle 的配置命令。
Maven (pom.xml)
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
Gradle (build.gradle)
implementation 'org.jsoup:jsoup:1.17.2'
如果你不使用构建工具,可以从 官方网站 下载 JAR 文件,并将其添加到项目的 classpath 中。
3. 快速上手:最小化工作示例
让我们编写一个最简单的程序,加载 Google 首页并输出其标题。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class QuickStart {
public static void main(String[] args) throws Exception {
// 1. 通过 URL 加载 HTML 文档
Document doc = Jsoup.connect("https://www.google.com").get();
// 2. 提取页面标题(<title> 标签的内容)
String title = doc.title();
// 3. 输出结果
System.out.println("页面标题: " + title);
}
}
这段代码向指定 URL 发送 HTTP GET 请求,解析返回的 HTML,并返回一个 Document 对象。方法 title() 是获取 <title> 标签内容的便捷方式。输出结果类似于:页面标题: Google。
4. Jsoup 核心方法与类
下面介绍库中的关键类和方法。所有示例均假设你已经导入了 org.jsoup.Jsoup 和 org.jsoup.nodes.*。
4.1. Jsoup.connect(String url)
方法签名: public static Connection connect(String url)
功能说明: 创建到指定 URL 的新 HTTP 连接。返回一个 Connection 对象,通过它可以配置请求参数(如超时、请求头等),并最终执行请求获取文档。