tika提取html,TIKA内容提取
Tika使用不同的解析器库来提取给解析器的内容。它选择了正确的语法分析器提取给定的文档类型。
解析文件,一般用于Tika外观facade类的parseToString()方法。下面显示的是所涉及分析过程的步骤和这些由Tika的ParsertoString()方法提取。
抽象的分析过程:
最初,当我们传一个文件到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包的框架图。
有几个可用的解析器类,如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
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
tika提取html,TIKA内容提取相关推荐
- java tika 读取文件_【apache tika】apache tika获取文件内容(与FileUtils的对比)
Tika支持多种功能: 文档类型检测 内容提取 元数据提取 语言检测 重要特点: 统一解析器接口:Tika封装在一个单一的解析器接口的第三方解析器库.由于这个特征,用户逸出从选择合适的解析器库的负担, ...
- 如何用Python批量提取PDF文本内容?
本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...
- 基于OpenCV的表格文本内容提取
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小伙伴们可能会觉得从图像中提取文本是一件很麻烦的事情,尤其是需要提 ...
- Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...
- pythonresponse对象的属性_Scrapy中response属性以及内容提取
Python Python开发 Python语言 Scrapy中response属性以及内容提取 一.属性 url :HTTP响应的url地址,str类型 status:HTTP响应的状态码, int ...
- python爬虫程序的流程图_Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)...
###1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到 ...
- python修改zip文件内容_windows-将zip文件内容提取到Python 2.7中的特定目录
windows-将zip文件内容提取到Python 2.7中的特定目录 这是我当前用于提取与脚本位于同一当前工作目录中的zip文件的代码. 如何指定要提取到的其他目录? 我尝试的代码未将其提取到我想要 ...
- 如何提取多层json数据 python_Postgre数据库字段Json内容提取(基于Python)
需求 将列表中全部Json元素的指定内容提取后通过连接符拼接在一起 如: [{'id': '77276086769716567954', 'cnName': '大正', 'enName': 'Tais ...
- python soup中文歌词_Python调用BeautifuSoup进行html的文本内容提取问题 [ 求问吃鸡主播beautifu1 boy...
导航:网站首页 > Python调用BeautifuSoup进行html的文本内容提取问题 [ 求问吃鸡主播beautifu1 boy Python调用BeautifuSoup进行html的文本 ...
最新文章
- PHP tcp短链接,http请求怎样实现TCP长连接、短连接
- 考研数学一历年真题小题(选择填空)整理
- Spring学习5之自动装配Bean01
- python sys模块
- Angular refreshView的执行原理
- Layui --- [Mar]给渲染后的表格加CSS样式
- PHP中fileinfo的作用以及怎么开启fileinfo
- 利用计算机进行导弹轨道计算,超级计算机为何被称为大国重器?可模拟核试验或测算弹道导弹轨迹!...
- 使用EasyBCD修改设置引导启动项
- 我的世界服务器怎么无限刷红石,我的世界:生存最需要的5个红石机器!MC大神才能看懂这操作!...
- PHP是单线程还是多线程?
- 用dep代替 go get 来获取私有库
- 崋佬论币;从哪里跌倒,就从哪里爬起来
- Android App性能优化总结
- 获取已安装设备的高级信息
- excel数据导入mysql被截取_Excel导入数据库时出现的文本截断问题解决方案
- java oxygen下载_Eclipse 下载 安装 (Oxygen版本)
- Java中级面试题及答案解析(4)
- 《Hacking Raspberry Pi》第一章
- 摩飞榨汁杯_Morphy Richards/摩飞电器中国官方网站
热门文章
- java 查找注解_Java利用反射如何查找使用指定注解的类详解
- vuejs页面跳转_【Vue 学习】 VueJS 生命周期
- devc++鼠标变成了光标_游戏鼠标选购避坑指南 教你如何轻松选择适合自己的鼠标...
- android一格一格向上的进度条,如何 使用 ProgressBar 进度条
- 抽象类java启动线程_java 线程复习笔记
- java singletonlist_Java Collections singletonList()方法及示例
- linux安装mysql默认的配置文件_[转]关于Linux安装mysql默认配置文件位置
- mysql数据库新浪博客_4.MySQL数据库类的定义
- 从Dataframe训练数据,构造可迭代训练的batch数据
- 机器学习Machine learning in action实战相关资料