Jsoup

Document doc = Jsoup.connect("网址").get();
Elements links = doc.select("div.模块类名");
处理links获得所需数据
### 使用 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值