jsoup
时间: 2025-05-10 08:53:10 浏览: 26
### 使用 Jsoup Java HTML 解析库
#### 安装依赖项
为了使用 Jsoup,需先将其加入项目中的构建配置文件。如果采用 Maven 构建,则可以在 `pom.xml` 文件中添加如下依赖:
```xml
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.4</version>
</dependency>
```
对于 Gradle 用户而言,应在 `build.gradle` 或者 `build.gradle.kts` 中声明相应的依赖关系。
#### 初始化并加载HTML文档
可以通过多种方式初始化 Html 文档对象,比如从 URL 加载、本地文件或者直接传入一段 HTML 字符串。以下是几种常见的方式[^2]:
- **从URL加载**
```java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Example {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("http://example.com").get();
System.out.println(doc.title());
}
}
```
- **读取本地文件**
可以像这样指定文件路径来解析本地存储的 HTML 文件[^5]:
```java
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class LocalFileExample {
public static void main(String[] args) throws Exception {
String filePath = "path/to/html/file.html";
String content = new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
Document doc = Jsoup.parse(content);
System.out.println(doc.title());
}
}
```
- **解析字符串形式的HTML片段**
如果已经有了现成的 HTML 片段作为字符串存在内存里,可以直接调用 parse 方法转换为 document 对象:
```java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class HtmlStringExample {
public static void main(String[] args) {
String htmlSnippet = "<html><head><title>First Parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(htmlSnippet);
System.out.println(doc.title()); // 输出:"First Parse"
}
}
```
#### 数据提取操作
一旦拥有了 Document 实例之后就可以利用选择器语法轻松定位所需节点,并执行进一步的操作如获取属性值、修改文本内容等。这里给出几个基本的例子说明如何选取元素及其子集[^3]:
- 获取所有的链接 (`a` 标签)
```java
Elements links = doc.select("a[href]");
for (Element link : links) {
System.out.println(link.attr("href"));
System.out.println(link.text());
}
```
- 查找具有特定类名的所有 div 元素
```java
Elements newsHeadlines = doc.select("div.headline");
for (Element headline : newsHeadlines) {
System.out.println(headline.text());
}
```
- 访问表格内的单元格数据
假设有一个标准结构化的 `<table>` 表单,可以按照下面的方法遍历每一行记录:
```java
Element table = doc.getElementById("myTable"); // 替换成实际ID名称
Elements rows = table.select("tr");
for (int i = 0; i < rows.size(); ++i){
Element row = rows.get(i);
if (!row.className().equals("header")){ // 跳过表头部分
Elements cols = row.select("td");
for(int j=0;j<cols.size();++j){
System.out.print(cols.get(j).text() + "\t");
}
System.out.println("");
}
}
```
Jsoup 的强大之处在于其灵活的选择表达式机制以及直观易懂的 API 设计,这使得即使是复杂的 DOM 结构也能被快速而准确地解析出来[^4]。
阅读全文
相关推荐













