tika提取html,TIKA内容提取

tika提取html,TIKA内容提取Tika 使用不同的解析器库来提取给解析器的内容 它选择了正确的语法分析器提取给定的文档类型 解析文件 一般用于 Tika 外观 facade 类的 parseToStrin 方法 下面显示的是所涉及分析过程的步骤和这些由 Tika 的 ParsertoStri 方法提取 抽象的分析过程 最初 当我们传一个文件到 Tika 它使用与之适合的类型检测机制和检测文件类型 一旦文档类型是已知的 它选择从解析器库中

Tika使用不同的解析器库来提取给解析器的内容。它选择了正确的语法分析器提取给定的文档类型。

解析文件,一般用于Tika外观facade类的parseToString()方法。下面显示的是所涉及分析过程的步骤和这些由Tika的ParsertoString()方法提取。

aadb1dd471aa4545dc8afe675120866f.png

抽象的分析过程:

最初,当我们传一个文件到Tika,它使用与之适合的类型检测机制和检测文件类型。

一旦文档类型是已知的,它选择从解析器库中合适的解析器。解析器库中包含的类使用外部库。

然后将文档传送到选择将解析的内容,提取文本,并且还抛出了不可读格式异常解析器。

使用Tika内容提取

下面给出的是程序使用Tika facade 类从文件中提取文本:

importjava.io.File;importjava.io.IOException;importorg.apache.tika.Tika;importorg.apache.tika.exception.TikaException;importorg.xml.sax.SAXException;publicclassTikaExtraction{publicstaticvoidmain(finalString[]args)throwsIOException,TikaException{//Assume sample.txt is in your current directoryFilefile=newFile(“sample.txt”);//Instantiating Tika facade classTikatika=newTika();Stringfilecontent=tika.parseToString(file);System.out.println(“Extracted Content: “+filecontent);}}

将以上代码保存为TikaExtraction.java并在命令提示符下运行:

javacTikaExtraction.java

javaTikaExtraction

注意:假设 sample.txt 是具有下列内容。

Hi students welcome to yiibai

它提供了以下的输出:

Extracted Content: Hi students welcome to yiibai

使用Parser接口内容提取

Tika 解析器包提供了使用它可以分析一个文本文档的几个接口和类。下面给出的是org.apache.tika.parser包的框架图。

56690b5749f37e9c4df44471e36e2d9a.png

有几个可用的解析器类,如PDF格式分析器,Mp3Passer,OfficeParser等,逐一分析各自的文件。所有这些类都实现了解析器接口。

CompositeParser

给出的图表显示Tika通用解析器类CompositeParser 主AutoDetectParser。由于CompositeParser类遵循复合设计模式,可以用一组解析器实例作为一个单独的解析器。CompositeParser类也可以访问所有实现解析器接口的类。

AutoDetectParser

这是CompositeParser的子类,它提供了自动类型检测。使用此功能,AutoDetectParser自动发送收到的文件到使用该复合方法适当分析器类。

parse()方法

除了parseToString(),还可以使用分析器接口的parse()方法。该方法的原型如下所示。

下表列出了它接受作为参数的四个对象。

S.No.

对象及描述

1

InputStream stream

包含任何文件的InputStream对象的内容

2

ContentHandler handler

Tika通过文档作为XHTML内容到此处理,此后该文件正在使用SAX API处理。它提供了在一个文件有效的后处理的内容。

3

Metadata metadata

元数据对象是用来既作为源和文件的元数据的目标。

4

ParseContext context

此对象使用在如遇有客户端应用程序想要定制解析过程。

例如:

下面给出一个例子,说明如何使用 parse()方法。

步骤 1:

要使用解析器接口的parse()方法,实例化任何为其提供实现这个接口的类。

也有个别解析器类,如PDFParser,OfficeParser,XMLParser等等。可以使用这些个人文件解析器。或者也可以使用CompositeParser或AutoDetectParser在内部使用的所有解析器类,并提取使用合适的解析器文档的内容。

Parserparser=newAutoDetectParser();(or)Parserparser=newCompositeParser();(or)objectof any individual parsers giveninTikaLibrary

步骤 2:

创建一个处理类的对象。下面给出的是三个内容处理程序:

S.No.

类及描述

1

BodyContentHandler

这个类采用XHTML输出的主体部分,并写入该内容到输出写入或输出流。然后重定向XHTML内容到另一个内容处理程序实例。

2

LinkContentHandler

这个类检测,并挑选XHTML文档的所有H-参考标签和转发那些使用类似网络爬虫工具。

3

TeeContentHandler

这个类可以帮助在同时使用多个工具。

由于我们的目标是要提取的文件的文本内容,实例化BodyContentHandler如下图所示:

BodyContentHandlerhandler=newBodyContentHandler();

步骤  3:

创建的元数据对象,如下所示:

Metadatametadata=newMetadata();

步骤  4:

创建任何输入流对象,并通过您的文件应该被提取到它。

FileInputstream

通过将文件路径作为参数实例化一个文件对象,这个对象传递给的FileInputStream类的构造函数。

注意:传递给文件对象的路径不应包含空格。

使用这些输入流类的问题是,它们不支持随机访问读取,来高效地处理某些文件格式是必需。要解决此问题,Tika提供TikaInputStream。

Filefile=newFile(filepath)FileInputStreaminputstream=newFileInputStream(file);(or)InputStreamstream=TikaInputStream.get(newFile(filename));

步骤 5:

创建一个解析的上下文对象,如下所示:

ParseContextcontext=newParseContext();

步骤 6:

实例化解析器对象,调用parse方法,并通过所有需要的对象,如下面的原型:

parser.parse(inputstream,handler,metadata,context);

下面给出的是程序使用的解析器接口内容提取:

importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importorg.apache.tika.exception.TikaException;importorg.apache.tika.metadata.Metadata;importorg.apache.tika.parser.AutoDetectParser;importorg.apache.tika.parser.ParseContext;importorg.apache.tika.parser.Parser;importorg.apache.tika.sax.BodyContentHandler;importorg.xml.sax.SAXException;publicclassParserExtraction{publicstaticvoidmain(finalString[]args)throwsIOException,SAXException,TikaException{//Assume sample.txt is in your current directoryFilefile=newFile(“sample.txt”);//parse method parametersParserparser=newAutoDetectParser();BodyContentHandlerhandler=newBodyContentHandler();Metadatametadata=newMetadata();FileInputStreaminputstream=newFileInputStream(file);ParseContextcontext=newParseContext();//parsing the fileparser.parse(inputstream,handler,metadata,context);System.out.println(“File content : “+Handler.toString());}}

将以上代码保存为 ParserExtraction.java 并在命令提示符下运行:

javacParserExtraction.java

javaParserExtraction

假设 sample.txt 包含以下内容。

Hi students welcome to yiibai

它提供了以下的输出:

File content : Hi students welcome to yiibai

¥ 我要打赏

纠错/补充

收藏

加啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个最多限加 3 个群。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220432.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:29
下一篇 2026年3月17日 下午8:30


相关推荐

  • 小龙虾OpenClaw虽然很强大,但是网工运维一定要注意其安全性

    小龙虾OpenClaw虽然很强大,但是网工运维一定要注意其安全性

    2026年3月12日
    1
  • stm32 sd卡读写_sd卡引脚定义图

    stm32 sd卡读写_sd卡引脚定义图SD卡   SD卡(SecureDigitalMemoryCard)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。   SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC…

    2022年10月3日
    6
  • PSTools[通俗易懂]

    PSTools[通俗易懂]howtogetthePSTools?fromhere:http://technet.microsoft.com/en-us/sysinternals/bb897553.aspxAfterdownloadthePSToos,youcanextratehPSToos,thenkyouwillgetasetofPCtools.thatcotain

    2025年8月21日
    6
  • 1073. 树的中心(树形dp)[通俗易懂]

    1073. 树的中心(树形dp)[通俗易懂]给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。请你在树中找到一个点,使得该点到树中其他结点的最远距离最近。输入格式第一行包含整数 n。接下来 n−1 行,每行包含三个整数 ai,bi,ci,表示点 ai 和 bi 之间存在一条权值为 ci 的边。输出格式输出一个整数,表示所求点到树中其他结点的最远距离。数据范围1≤n≤10000,1≤ai,bi≤n,1≤ci≤105 输入样例: 5 2 1 1 3 2 1 4 3 1 5 1

    2022年8月8日
    6
  • idea设置java版本_手机安卓版本怎么升级

    idea设置java版本_手机安卓版本怎么升级一、背景即使我电脑安装的JDK版本是8,然而在idea运行中常常提示xxjdk1.5已过时之类的,why?明明是我装的JDK8啊二、解决鼠标点击file->setting,进入idea的设置页面settings,根据截图操作,懒得写了,最后点击ok然后,鼠标点击file->ProjectStructure…

    2026年2月24日
    5
  • 解决UE4缓存使C盘膨胀的问题

    解决UE4缓存使C盘膨胀的问题大家好 可能很多新手使用 UE4 的时候会发现 C 盘越来越小了 那是因为 UE4 引擎的缓存文件默认保存在 C 盘的缘故 下面来告诉大家怎么解决这个问题 概述一 出现的问题 UE4 的缓存文件会导致 C 盘膨胀 二 解决的方式 请严格按照下列步骤来执行 1 更改 UE4 的缓存路径 2 删除 UE4 在 C 盘的缓存 3 删除各个引擎版本 SwarmAgent 联机构建 的缓存文件

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号