Java取HTML table tr td内的数据
在Web开发中,经常需要从HTML页面中提取数据,特别是当HTML页面中有表格时。本文将介绍如何使用Java来取HTML表格中的数据,以及如何解析HTML页面。
1. 引言
在开发Web应用程序时,经常需要从HTML页面中提取数据并进行处理。HTML中的表格(table)是一种常见的数据展示方式。我们经常需要从表格中提取数据,例如爬虫程序需要从网页中提取数据,或者我们需要从已有的HTML文档中读取数据。
2. HTML表格结构
HTML的表格由<table>、<tr>和<td>等标签组成。下面是一个简单的HTML表格结构的示例:
<table>
<tr>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
<tr>
<td>张三</td>
<td>20</td>
<td>男</td>
</tr>
<tr>
<td>李四</td>
<td>25</td>
<td>女</td>
</tr>
</table>
在上面的示例中,表格包含三列,第一行是表头,后面的行是数据行。
3. 使用Jsoup解析HTML页面
为了从HTML页面中提取表格数据,我们可以使用Jsoup库。Jsoup是一个Java HTML解析器,可以方便地处理HTML文档。
首先,我们需要引入Jsoup库。可以在Maven项目中添加以下依赖项:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
然后,我们可以使用以下代码来解析HTML页面并提取表格数据:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class HtmlParser {
public static void main(String[] args) throws Exception {
// 从URL加载HTML页面
String url = "
Document doc = Jsoup.connect(url).get();
// 获取所有的表格
Elements tables = doc.select("table");
// 遍历每个表格
for (Element table : tables) {
// 获取所有的行
Elements rows = table.select("tr");
// 遍历每行
for (Element row : rows) {
// 获取所有的单元格
Elements cells = row.select("td");
// 遍历每个单元格
for (Element cell : cells) {
// 输出单元格中的文本内容
System.out.println(cell.text());
}
}
}
}
}
上面的代码首先使用Jsoup.connect(url).get()
方法从URL加载HTML页面。然后,通过doc.select("table")
获取所有的表格。接下来,我们遍历每个表格,再遍历每个行,最后遍历每个单元格,并输出单元格中的文本内容。
4. 类图
下面是本文示例代码中的类图:
classDiagram
class Document {
-String text()
}
class Element {
-String text()
}
class Elements {
-Element select(String selector)
}
class Jsoup {
-Document connect(String url)
}
class HtmlParser {
+main(String[] args)
}
Document "1" --> "1..*" Element
Element "1" --> "1..*" Element
Elements "1" --> "1..*" Element
Jsoup "1" --> "1..*" Document
HtmlParser "1" --> "1" Jsoup
上面的类图展示了本文代码示例中使用的核心类。Document
类表示HTML文档,Element
类表示HTML元素(例如表格、行、单元格等),Elements
类表示一组HTML元素,Jsoup
类是Jsoup库的主要入口点,HtmlParser
类是我们自己编写的解析器。
5. 关系图
下面是本文示例代码中的关系图:
erDiagram
HTML_PAGE ||--o TABLE
TABLE ||--o COLUMN
TABLE ||--o COLUMN
TABLE ||--o COLUMN
COLUMN ||--