最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java代碼實現(xiàn)從HTML文件中提取純文本內容

 更新時間:2026年04月23日 11:33:29   作者:咕白m625  
在?Java?數(shù)據(jù)處理、文本清洗、內容解析等開發(fā)場景中,從?HTML?文件中剔除標簽、樣式、腳本等冗余格式,提取核心純文本是高頻需求,下面我們就來看看如何使用Java實現(xiàn)從HTML文件中提取純文本內容吧

在 Java 數(shù)據(jù)處理、文本清洗、內容解析等開發(fā)場景中,從 HTML 文件中剔除標簽、樣式、腳本等冗余格式,提取核心純文本是高頻需求。實現(xiàn)該需求的技術方案較多,本文將分享一種輕量、簡潔的實現(xiàn)方式:使用 Free Spire.Doc for Java 庫完成 HTML 純文本提取,為開發(fā)者提供直接可復用的解決方案。

一、實現(xiàn)原理

Free Spire.Doc for Java 是一款免費庫,其核心設計圍繞 Word 文檔的段落、節(jié)、表格等元素展開。當調用 loadFromFile 方法并指定 FileFormat.Html 時,庫內部會將 HTML 標簽、樣式和文本映射到自己的文檔對象模型中。隨后調用 getText() 方法,庫會遍歷文檔樹,將所有文本節(jié)點的內容拼接并返回,同時過濾掉 HTML 標簽和大部分腳本/樣式內容。這種方式本質上是一種“將 HTML 解析為富文本再提取純文本”的橋接方案。

二、環(huán)境準備

添加依賴:在項目的 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。

準備 HTML 文件:例如 Sample.html,包含任意結構的內容。

三、代碼實現(xiàn)

下面是一個完整的示例,展示如何讀取 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. 創(chuàng)建 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 方法有兩個參數(shù):文件路徑和文件格式。FileFormat.Html 告訴庫按 HTML 方式解析輸入。
  • 第 3 步getText() 返回文檔中所有文本內容的字符串表示,換行符和空格按內部規(guī)則保留,但 HTML 標簽被完全剝離。
  • 第 4 步:使用 try-with-resources 語法安全地寫入 TXT 文件。

四、注意事項與局限性

1. 文本布局簡化

getText() 返回的文本不保證保留原始 HTML 中的表格結構、縮進或列表符號。對于需要保持格式的提取任務(如表格轉 CSV),此方法可能不適用。

2. 對 JavaScript 和 CSS 的處理

庫在加載 HTML 時會忽略 <script><style> 標簽內的內容,但部分內聯(lián)樣式或事件屬性可能殘留于文本?實際測試表明,getText() 基本只提取可見文本節(jié)點,不會輸出腳本或樣式代碼,比較干凈。

3. 免費版適用場景

免費版本支持輕量級 HTML 文本提取,有頁數(shù)限制僅滿足中小型項目、個人開發(fā)的基礎需求;復雜文檔處理場景可根據(jù)業(yè)務選型其他方案。

五、方法補充

在 Java 中從 HTML 文件中提取純文本內容,最常用、最可靠的方法是使用 Jsoup 庫。它能夠解析 HTML 文檔,并提供了便捷的 API 來獲取文本內容,同時還能正確處理標簽、實體和嵌套結構。

1.使用 Jsoup(推薦)

添加依賴

Maven

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.18.3</version> <!-- 2026年最新版本 -->
</dependency>

Gradle

implementation 'org.jsoup:jsoup:1.18.3'

從 HTML 文件提取純文本

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
public class HtmlToText {
    public static void main(String[] args) {
        try {
            // 加載 HTML 文件
            File input = new File("example.html");
            Document doc = Jsoup.parse(input, "UTF-8");
            // 提取純文本(保留換行和基本格式)
            String plainText = doc.text();
            System.out.println(plainText);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

保留段落和換行格式

doc.text() 會返回所有文本,但會合并空白。若想保留段落結構,可以使用 doc.body().text() 或自定義處理:

// 獲取 body 內的文本
String bodyText = doc.body().text();
// 更精細的控制:提取每個塊元素并添加換行
StringBuilder sb = new StringBuilder();
doc.body().getAllElements().forEach(element -> {
    if (element.isBlock()) {
        String txt = element.ownText();
        if (!txt.isEmpty()) {
            sb.append(txt).append("\n");
        }
    }
});
System.out.println(sb.toString());

從 URL 或字符串中提取

// 從 URL 讀取
Document doc = Jsoup.connect("https://example.com").get();
String text = doc.text();
// 從 HTML 字符串讀取
String html = "<html><body><p>Hello, world!</p></body></html>";
Document doc2 = Jsoup.parse(html);
String text2 = doc2.text();

2.使用正則表達式(不推薦,僅作備選)

正則表達式處理 HTML 容易出錯,尤其對于復雜的嵌套結構。簡單場景可臨時使用:

public static String htmlToTextRegex(String html) {
    // 移除 <script> 和 <style> 內容
    String noScript = html.replaceAll("(?i)<script[^>]*>.*?</script>", "")
                          .replaceAll("(?i)<style[^>]*>.*?</style>", "");
    // 移除所有 HTML 標簽
    String noTags = noScript.replaceAll("<[^>]+>", "");
    // 解碼 HTML 實體(如   -> 空格)
    String unescaped = org.apache.commons.text.StringEscapeUtils.unescapeHtml4(noTags);
    // 合并空白
    return unescaped.replaceAll("\\s+", " ").trim();
}

需要額外添加 Apache Commons Text 依賴:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.12.0</version>
</dependency>

缺陷:無法正確處理嵌套標簽、CDATA、注釋等復雜結構,且可能誤刪標簽內的合法文本。

3.其他備選方案

HTML Cleaner

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 等)中提取文本的場景。

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>2.9.0</version>
</dependency>
import org.apache.tika.Tika;
import java.io.File;
Tika tika = new Tika();
String text = tika.parseToString(new File("example.html"));

六、總結

本文提供了實現(xiàn) HTML 文件純文本快速提取的簡單方案,核心代碼僅數(shù)行,無需手動編寫 HTML 標簽解析邏輯,大幅降低開發(fā)成本。 該方案的核心優(yōu)勢:

  • 開箱即用,無復雜配置;
  • 自動過濾 HTML 冗余格式,純文本提取精準;
  • 免費版無授權成本,適合輕量級業(yè)務場景。

開發(fā)者可直接復用代碼,并根據(jù)自身需求封裝為工具類,適配批量 HTML 文件處理等擴展場景。

到此這篇關于Java代碼實現(xiàn)從HTML文件中提取純文本內容的文章就介紹到這了,更多相關Java提取HTML純文本內容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 用攔截器修改返回response,對特定的返回進行修改操作

    用攔截器修改返回response,對特定的返回進行修改操作

    這篇文章主要介紹了用攔截器修改返回response,對特定的返回進行修改操作。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java log4j詳細教程

    Java log4j詳細教程

    日志是應用軟件中不可缺少的部分,Apache的開源項目log4j是一個功能強大的日志組件,提供方便的日志記錄。在apache網站:jakarta.apache.org/log4j 可以免費下載到Log4j最新版本的軟件包
    2015-11-11
  • 如何使用JAVA調用SHELL

    如何使用JAVA調用SHELL

    這篇文章主要介紹了如何使用JAVA調用SHELL,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • Java對接拉卡拉支付完整指南(附詳細代碼)

    Java對接拉卡拉支付完整指南(附詳細代碼)

    拉卡拉支付SDK是一個面向Java開發(fā)者的支付解決方案,其設計目的是為了幫助開發(fā)者在Java環(huán)境中輕松集成拉卡拉的支付功能,這篇文章主要介紹了Java對接拉卡拉支付的相關資料,需要的朋友可以參考下
    2026-03-03
  • Java學生信息類繼承與接口的原理及使用方式

    Java學生信息類繼承與接口的原理及使用方式

    這篇文章主要介紹了Java學生信息類繼承與接口的原理及使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Java內存緩存工具Guava LoadingCache使用解析

    Java內存緩存工具Guava LoadingCache使用解析

    這篇文章主要介紹了Java內存緩存工具Guava LoadingCache使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • @NotEmpty、@NotBlank、@NotNull的區(qū)別

    @NotEmpty、@NotBlank、@NotNull的區(qū)別

    這篇文章主要介紹了@NotEmpty、@NotBlank、@NotNull的區(qū)別,需要的朋友可以參考下
    2016-09-09
  • 一文詳解Java?Guava核心字符串API操作的實用指南

    一文詳解Java?Guava核心字符串API操作的實用指南

    在?Java?開發(fā)中,字符串操作是日常開發(fā)高頻場景,Google?開源的?Guava?庫為字符串操作提供了一套簡潔、高效且功能豐富的工具集,本文將深入解析?Guava?中核心的字符串操作?API,結合場景講解其用法與優(yōu)勢,希望對大家有所幫助
    2026-04-04
  • Java中MapStruct映射處理器報錯的問題解決

    Java中MapStruct映射處理器報錯的問題解決

    MapStruct是一個強大的Java映射框架,它能夠在編譯時生成映射代碼,,本文主要介紹了Java中MapStruct映射處理器報錯的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • java使用poi生成excel的步驟

    java使用poi生成excel的步驟

    2010以上格式使用XSSFWorkBook對象, 2003格式使用HSSFWorkBook對象, 其他對象操作基本一樣,本文重點給大家介紹java使用poi生成excel的相關知識,感興趣的朋友一起看看吧
    2022-04-04

最新評論

惠东县| 吉木萨尔县| 遂平县| 蒙城县| 巍山| 衡水市| 大庆市| 旬邑县| 荔波县| 皮山县| 恩平市| 迁西县| 苍南县| 康乐县| 桑植县| 吉林市| 蒲江县| 天柱县| 敖汉旗| 林甸县| 大城县| 山东| 伊宁县| 绥棱县| 临猗县| 威海市| 东宁县| 高雄县| 集安市| 金秀| 炎陵县| 梓潼县| 萍乡市| 长子县| 新巴尔虎左旗| 抚顺县| 夹江县| 敦化市| 安丘市| 佛教| 伊吾县|