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 ||--