使用 Java 提取 HTML 文件中的纯文本内容
·
、实现原理
Free Spire.Doc for Java 是一款免费库,其核心设计围绕 Word 文档的段落、节、表格等元素展开。当调用 loadFromFile 方法并指定 FileFormat.Html 时,库内部会将 HTML 标签、样式和文本映射到自己的文档对象模型中。
随后调用 getText() 方法,库会遍历文档树,将所有文本节点的内容拼接并返回,同时过滤掉 HTML 标签和大部分脚本/样式内容。这种方式本质上是一种“将 HTML 解析为富文本再提取纯文本”的桥接方案。
二、环境准备
添加依赖:在项目的 pom.xml 中添加仓库地址与依赖坐标:
<!-- 仓库配置 -->
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<!-- 核心依赖 -->
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>14.3.1</version>
</dependency>
如果使用 Gradle:
implementation 'e-iceblue:spire.doc.free:14.3.1@jar'
或者手动下载 JAR 文件并添加到 classpath。
三、Java 实现代码
下面是一个完整的示例,展示如何读取 HTML 文件、提取文本并保存为 TXT 文件。
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());
}
}
}
代码说明
- 第 1 步:实例化
Document类,这是 Free Spire.Doc 的核心入口,用于承载文档内容。 - 第 2 步:
loadFromFile方法有两个参数:文件路径和文件格式。FileFormat.Html告诉库按 HTML 方式解析输入。 - 第 3 步:
getText()返回文档中所有文本内容的字符串表示,换行符和空格按内部规则保留,但 HTML 标签被完全剥离。 - 第 4 步:使用 try-with-resources 语法安全地写入 TXT 文件。
四、注意事项与局限性
1. 文本布局简化
getText() 返回的文本不保证保留原始 HTML 中的表格结构、缩进或列表符号。对于需要保持格式的提取任务(如表格转 CSV),此方法可能不适用。
2. 对 JavaScript 和 CSS 的处理
库在加载 HTML 时会忽略 <script> 和 <style> 标签内的内容,但部分内联样式或事件属性可能残留于文本?实际测试表明,getText() 基本只提取可见文本节点,不会输出脚本或样式代码,比较干净。
3. 免费版适用场景
免费版本支持轻量级 HTML 文本提取,有页数限制仅满足中小型项目、个人开发的基础需求;复杂文档处理场景可根据业务选型其他方案。
更多推荐
所有评论(0)