许龙龙 發表於 2026-4-23 11:16:00

使用 Java 提取 HTML 文件中的纯文本内容

<p>在 Java 数据处理、文本清洗、内容解析等开发场景中,从 HTML 文件中剔除标签、样式、脚本等冗余格式,提取核心纯文本是高频需求。实现该需求的技术方案较多,本文将分享一种轻量、简洁的实现方式:使用 Free Spire.Doc for Java 库完成 HTML 纯文本提取,为开发者提供直接可复用的解决方案。</p>
<hr>
<h2 id="一实现原理">一、实现原理</h2>
<p>Free Spire.Doc for Java 是一款免费库,其核心设计围绕 Word 文档的段落、节、表格等元素展开。当调用 <code>loadFromFile</code> 方法并指定 <code>FileFormat.Html</code> 时,库内部会将 HTML 标签、样式和文本映射到自己的文档对象模型中。</p>
<p>随后调用 <code>getText()</code> 方法,库会遍历文档树,将所有文本节点的内容拼接并返回,同时过滤掉 HTML 标签和大部分脚本/样式内容。这种方式本质上是一种“将 HTML 解析为富文本再提取纯文本”的桥接方案。</p>
<hr>
<h2 id="二环境准备">二、环境准备</h2>
<p><strong>添加依赖</strong>:在项目的 <code>pom.xml</code> 中添加仓库地址与依赖坐标:</p>
<pre><code class="language-xml">&lt;!-- 仓库配置 --&gt;
&lt;repositories&gt;
    &lt;repository&gt;
      &lt;id&gt;com.e-iceblue&lt;/id&gt;
      &lt;name&gt;e-iceblue&lt;/name&gt;
      &lt;url&gt;https://repo.e-iceblue.com/nexus/content/groups/public/&lt;/url&gt;
    &lt;/repository&gt;
&lt;/repositories&gt;

&lt;!-- 核心依赖 --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;e-iceblue&lt;/groupId&gt;
    &lt;artifactId&gt;spire.doc.free&lt;/artifactId&gt;
    &lt;version&gt;14.3.1&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<p>如果使用 Gradle:</p>
<pre><code class="language-groovy">implementation 'e-iceblue:spire.doc.free:14.3.1@jar'
</code></pre>
<p>或者手动下载 JAR 文件并添加到 classpath。</p>
<hr>
<h2 id="三java-实现代码">三、Java 实现代码</h2>
<p>下面是一个完整的示例,展示如何读取 HTML 文件、提取文本并保存为 TXT 文件。</p>
<pre><code class="language-java">import com.spire.doc.Document;
import com.spire.doc.FileFormat;

import java.io.FileWriter;
import java.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());
      }
    }
}
</code></pre>
<h3 id="代码说明">代码说明</h3>
<ul>
<li><strong>第 1 步</strong>:实例化 <code>Document</code> 类,这是 Free Spire.Doc 的核心入口,用于承载文档内容。</li>
<li><strong>第 2 步</strong>:<code>loadFromFile</code> 方法有两个参数:文件路径和文件格式。<code>FileFormat.Html</code> 告诉库按 HTML 方式解析输入。</li>
<li><strong>第 3 步</strong>:<code>getText()</code> 返回文档中所有文本内容的字符串表示,换行符和空格按内部规则保留,但 HTML 标签被完全剥离。</li>
<li><strong>第 4 步</strong>:使用 try-with-resources 语法安全地写入 TXT 文件。</li>
</ul>
<hr>
<h2 id="四注意事项与局限性">四、注意事项与局限性</h2>
<h3 id="1-文本布局简化">1. 文本布局简化</h3>
<p><code>getText()</code> 返回的文本不保证保留原始 HTML 中的表格结构、缩进或列表符号。对于需要保持格式的提取任务(如表格转 CSV),此方法可能不适用。</p>
<h3 id="2-对-javascript-和-css-的处理">2. 对 JavaScript 和 CSS 的处理</h3>
<p>库在加载 HTML 时会忽略 <code>&lt;script&gt;</code> 和 <code>&lt;style&gt;</code> 标签内的内容,但部分内联样式或事件属性可能残留于文本?实际测试表明,<code>getText()</code> 基本只提取可见文本节点,不会输出脚本或样式代码,比较干净。</p>
<h3 id="3-免费版适用场景">3. 免费版适用场景</h3>
<p>免费版本支持轻量级 HTML 文本提取,有页数限制仅满足中小型项目、个人开发的基础需求;复杂文档处理场景可根据业务选型其他方案。</p>
<hr>
<h2 id="五总结">五、总结</h2>
<p>本文提供了实现 HTML 文件纯文本快速提取的简单方案,核心代码仅数行,无需手动编写 HTML 标签解析逻辑,大幅降低开发成本。<br>
该方案的核心优势:</p>
<ul>
<li>开箱即用,无复杂配置;</li>
<li>自动过滤 HTML 冗余格式,纯文本提取精准;</li>
<li>免费版无授权成本,适合轻量级业务场景。</li>
</ul>
<p>开发者可直接复用代码,并根据自身需求封装为工具类,适配批量 HTML 文件处理等扩展场景。</p><br><br>
来源:https://www.cnblogs.com/jazz-z/p/19914105
頁: [1]
查看完整版本: 使用 Java 提取 HTML 文件中的纯文本内容