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

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

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

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

一、實(shí)現(xiàn)原理

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

二、環(huán)境準(zhǔn)備

添加依賴:在項(xiàng)目的 pom.xml 中添加倉庫地址與依賴坐標(biāo):

<!-- 倉庫配置 -->
<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'

或者手動(dòng)下載 JAR 文件并添加到 classpath。

準(zhǔn)備 HTML 文件:例如 Sample.html,包含任意結(jié)構(gòu)的內(nèi)容。

三、代碼實(shí)現(xiàn)

下面是一個(gè)完整的示例,展示如何讀取 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 對(duì)象
        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 步:實(shí)例化 Document 類,這是 Free Spire.Doc 的核心入口,用于承載文檔內(nèi)容。
  • 第 2 步loadFromFile 方法有兩個(gè)參數(shù):文件路徑和文件格式。FileFormat.Html 告訴庫按 HTML 方式解析輸入。
  • 第 3 步getText() 返回文檔中所有文本內(nèi)容的字符串表示,換行符和空格按內(nèi)部規(guī)則保留,但 HTML 標(biāo)簽被完全剝離。
  • 第 4 步:使用 try-with-resources 語法安全地寫入 TXT 文件。

四、注意事項(xiàng)與局限性

1. 文本布局簡(jiǎn)化

getText() 返回的文本不保證保留原始 HTML 中的表格結(jié)構(gòu)、縮進(jìn)或列表符號(hào)。對(duì)于需要保持格式的提取任務(wù)(如表格轉(zhuǎn) CSV),此方法可能不適用。

2. 對(duì) JavaScript 和 CSS 的處理

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

3. 免費(fèi)版適用場(chǎng)景

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

五、方法補(bǔ)充

在 Java 中從 HTML 文件中提取純文本內(nèi)容,最常用、最可靠的方法是使用 Jsoup 庫。它能夠解析 HTML 文檔,并提供了便捷的 API 來獲取文本內(nèi)容,同時(shí)還能正確處理標(biāo)簽、實(shí)體和嵌套結(jié)構(gòu)。

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() 會(huì)返回所有文本,但會(huì)合并空白。若想保留段落結(jié)構(gòu),可以使用 doc.body().text() 或自定義處理:

// 獲取 body 內(nèi)的文本
String bodyText = doc.body().text();
// 更精細(xì)的控制:提取每個(gè)塊元素并添加換行
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.使用正則表達(dá)式(不推薦,僅作備選)

正則表達(dá)式處理 HTML 容易出錯(cuò),尤其對(duì)于復(fù)雜的嵌套結(jié)構(gòu)。簡(jiǎn)單場(chǎng)景可臨時(shí)使用:

public static String htmlToTextRegex(String html) {
    // 移除 <script> 和 <style> 內(nèi)容
    String noScript = html.replaceAll("(?i)<script[^>]*>.*?</script>", "")
                          .replaceAll("(?i)<style[^>]*>.*?</style>", "");
    // 移除所有 HTML 標(biāo)簽
    String noTags = noScript.replaceAll("<[^>]+>", "");
    // 解碼 HTML 實(shí)體(如   -> 空格)
    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>

缺陷:無法正確處理嵌套標(biāo)簽、CDATA、注釋等復(fù)雜結(jié)構(gòu),且可能誤刪標(biāo)簽內(nèi)的合法文本。

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

<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"));

六、總結(jié)

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

  • 開箱即用,無復(fù)雜配置;
  • 自動(dòng)過濾 HTML 冗余格式,純文本提取精準(zhǔn);
  • 免費(fèi)版無授權(quán)成本,適合輕量級(jí)業(yè)務(wù)場(chǎng)景。

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

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

相關(guān)文章

  • 用攔截器修改返回response,對(duì)特定的返回進(jìn)行修改操作

    用攔截器修改返回response,對(duì)特定的返回進(jìn)行修改操作

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

    Java log4j詳細(xì)教程

    日志是應(yīng)用軟件中不可缺少的部分,Apache的開源項(xiàng)目log4j是一個(gè)功能強(qiáng)大的日志組件,提供方便的日志記錄。在apache網(wǎng)站:jakarta.apache.org/log4j 可以免費(fèi)下載到Log4j最新版本的軟件包
    2015-11-11
  • 如何使用JAVA調(diào)用SHELL

    如何使用JAVA調(diào)用SHELL

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

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

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

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

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

    Java內(nèi)存緩存工具Guava LoadingCache使用解析

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

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

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

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

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

    Java中MapStruct映射處理器報(bào)錯(cuò)的問題解決

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

    java使用poi生成excel的步驟

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

最新評(píng)論

万山特区| 永城市| 桦甸市| 梧州市| 石柱| 古蔺县| 明星| 岑巩县| 四川省| 伽师县| 临湘市| 定襄县| 砀山县| 西吉县| 桂阳县| 宜阳县| 九江县| 汉阴县| 涡阳县| 鄂尔多斯市| 曲靖市| 大田县| 通道| 康定县| 营口市| 永登县| 诸暨市| 历史| 江孜县| 新绛县| 郧西县| 图木舒克市| 望都县| 上栗县| 内江市| 疏附县| 调兵山市| 麻城市| 藁城市| 凉城县| 莱西市|