商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Java代码实现从HTML文件中提取纯文本内容

Java代码实现从HTML文件中提取纯文本内容

  发布于2026-07-14 阅读(0)

扫一扫,手机访问

在 Ja va 数据处理、文本清洗以及内容解析这些常见的开发场景里,从 HTML 文件中剥离掉标签、样式和脚本这些冗余的格式信息,只提取出核心的纯文本,可以说是一项相当高频的需求。市面上能用的技术方案不少,不过今天要聊的这个,主打一个轻量和简洁——用 Free Spire.Doc for Ja va 库来完成 HTML 纯文本提取,直接给出一套可复用的代码,省心省力。 ![Ja va代码实现从HTML文件中提取纯文本内容](http://img.318050.com/uploads/20260423/177691782969e99d457cefd643078394.webp) ## 一、实现原理 Free Spire.Doc for Ja va 本身是一款免费库,它的核心设计初衷是针对 Word 文档的段落、节、表格这些元素来工作的。当你调用它的 `loadFromFile` 方法并指定 `FileFormat.Html` 时,库内部就会把 HTML 的标签、样式和文本一一映射到它自己的文档对象模型中去。之后只要再调用 `getText()` 方法,库就会遍历整棵文档树,把里面所有文本节点的内容拼接起来并返回,同时把所有 HTML 标签和大部分脚本、样式内容过滤掉。说白了,这是一种“先把 HTML 解析成富文本,再从中提取纯文本”的桥接思路,虽然绕了点路,但胜在稳妥有效。 ## 二、环境准备 **添加依赖**:在项目的 `pom.xml` 中添加仓库地址与依赖坐标: ```xml com.e-iceblue e-iceblue https://repo.e-iceblue.com/nexus/content/groups/public/ e-iceblue spire.doc.free 14.3.1 ``` 如果用的是 Gradle,可以这样写: ```ja va implementation 'e-iceblue:spire.doc.free:14.3.1@jar' ``` 当然,手动下载 JAR 包然后添加到 classpath 也是没问题的。 **准备 HTML 文件**:比如你手头有一个 `Sample.html`,里面随便放点什么内容都行。 ## 三、代码实现 直接上一个完整的示例,演示怎么读取 HTML 文件、提取文本并保存为 TXT 文件。 ```ja va import com.spire.doc.Document; import com.spire.doc.FileFormat; import ja va.io.FileWriter; import ja va.io.IOException; public class ExtractTextFromHTML { public static void main(String[] args) { // 1. 创建 Document 对象 Document doc = new Document(); // 2. 加载 HTML 文件(指定格式为 Html) doc.loadFromFile("Sample.html", FileFormat.Html); // 3. 获取提取的纯文本 String text = doc.getText(); // 4. 将文本写入输出文件 try (FileWriter fileWriter = new FileWriter("HTMLText.txt")) { fileWriter.write(text); System.out.println("文本提取完成,已保存至 HTMLText.txt"); } catch (IOException e) { System.err.println("写入文件失败:" + e.getMessage()); } } } ``` **这段代码其实并不复杂,核心逻辑无非四步**:先实例化 `Document` 类,这是 Free Spire.Doc 的入口;然后调用 `loadFromFile`,两个参数分别是文件路径和文件格式,关键的 `FileFormat.Html` 让库知道要用 HTML 的方式去解析;接着用 `getText()` 方法拿到字符串,这里面换行符和空格会根据内部规则保留,但所有 HTML 标签都会被剥离干净;最后用 try-with-resources 语句安全地把文本写进 TXT 文件。 ## 四、注意事项与局限性 ### 1. 文本布局简化 `getText()` 返回的文本,不会保留原始 HTML 里的表格结构、缩进或者列表符号。如果提取任务对格式有要求,比如想把表格转成 CSV,那这个方法就不太灵了。 ### 2. 对 Ja vaScript 和 CSS 的处理 库在加载 HTML 的时候会直接忽略掉 `", "") .replaceAll("(?i)]*>.*?", ""); // 移除所有 HTML 标签 String noTags = noScript.replaceAll("<[^>]+>", ""); // 解码 HTML 实体(如 -> 空格) String unescaped = org.apache.commons.text.StringEscapeUtils.unescapeHtml4(noTags); // 合并空白 return unescaped.replaceAll("\\s+", " ").trim(); } ``` 需要额外添加 Apache Commons Text 依赖: ```xml org.apache.commons commons-text 1.12.0 ``` 它的缺陷也很明显:无法正确处理嵌套标签、CDATA、注释这类复杂结构,还可能误删标签内部的合法文本。 ### 3. 其他备选方案 **HTML Cleaner** ```ja va import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.CleanerProperties; HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); // 配置... TagNode node = cleaner.clean(new File("example.html")); String text = node.getText().toString(); ``` **Apache Tika** 这个方案适合需要从多种文档格式(HTML、PDF、Word 等)中统一提取文本的场景。 ```xml org.apache.tika tika-core 2.9.0 ``` ```ja va import org.apache.tika.Tika; import ja va.io.File; Tika tika = new Tika(); String text = tika.parseToString(new File("example.html")); ``` ## 六、总结 说到底,本文提供的这套用 Free Spire.Doc 提取 HTML 纯文本的方案,核心代码就那么几行,完全不需要手动去写 HTML 标签的解析逻辑,开发成本被大幅降低。它的核心优势也很明确:开箱即用,没有复杂的配置;自动过滤 HTML 里的冗余格式,纯文本提取得相当精准;免费版没有授权成本,很适合轻量级的业务场景。开发者完全可以拿来就用,再根据自己的需求封装成工具类,去应对批量 HTML 文件处理这类更扩展的场景。
本文转载于:https://www.jb51.net/program/362703ybm.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注