Java解析HTML文本并存入数据库

在现代互联网时代,网页是人们获取信息、交流和娱乐的重要渠道。网页的内容以HTML(超文本标记语言)的形式呈现,因此,开发者经常需要从HTML文本中提取有用的数据并进行处理。

本文将介绍如何使用Java语言解析HTML文本,并将提取到的数据存入数据库。我们将使用Jsoup这个强大的Java HTML解析库,以及MySQL数据库作为示例。

准备工作

在开始之前,我们首先需要确保已经安装了Java开发环境(JDK)和MySQL数据库。还需要添加Jsoup库的依赖。

安装JDK

你可以从Oracle官方网站下载适用于你的操作系统的JDK,并按照安装指南进行安装。可以使用以下命令验证JDK是否安装成功:

java -version

安装MySQL

你可以从MySQL官方网站下载适用于你的操作系统的MySQL,并按照安装指南进行安装。安装完成后,可以使用以下命令验证MySQL是否安装成功:

mysql -V

添加Jsoup依赖

在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中,添加以下依赖:

<dependency>
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.14.3</version>
</dependency>

如果使用Gradle构建项目,可以在dependencies块中添加以下依赖:

implementation 'org.jsoup:jsoup:1.14.3'

添加完依赖后,重新构建项目以使其生效。

使用Jsoup解析HTML

首先,我们需要从一个HTML文本中提取出所需的数据。Jsoup提供了简单而强大的API,使得解析HTML变得非常容易。

假设我们有一个包含书籍信息的HTML文本,如下所示:

<html>
  <body>
    <div class="book">
      <h2>Java编程入门</h2>
      <p>作者:张三</p>
      <p>价格:99.99</p>
    </div>
    <div class="book">
      <h2>Python深入浅出</h2>
      <p>作者:李四</p>
      <p>价格:89.99</p>
    </div>
  </body>
</html>

我们想要提取出每本书的标题、作者和价格。下面是使用Jsoup解析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) {
        String html = "<html>\n" +
                "  <body>\n" +
                "    <div class=\"book\">\n" +
                "      <h2>Java编程入门</h2>\n" +
                "      <p>作者:张三</p>\n" +
                "      <p>价格:99.99</p>\n" +
                "    </div>\n" +
                "    <div class=\"book\">\n" +
                "      <h2>Python深入浅出</h2>\n" +
                "      <p>作者:李四</p>\n" +
                "      <p>价格:89.99</p>\n" +
                "    </div>\n" +
                "  </body>\n" +
                "</html>";

        Document doc = Jsoup.parse(html);
        Elements books = doc.select(".book");

        for (Element book : books) {
            String title = book.select("h2").text();
            String author = book.select("p:eq(0)").text().replace("作者:", "");
            double price = Double.parseDouble(book.select("p:eq(1)").text().replace("价格:", ""));

            // 在这里可以将数据存入数据库
            System.out.println("书名:" + title);
            System.out.println("作者:" + author);
            System.out.println("价格:" + price);
            System.out.println("------------------");
        }
    }
}

运行以上代码,你将会看到如下输出:

书名:Java编程入门
作者:张三
价格:99.99
------------------
书名:Python深入浅出
作者: