用于 Java 的 HTML/XML 解析器 [关闭]
Posted
技术标签:
【中文标题】用于 Java 的 HTML/XML 解析器 [关闭]【英文标题】:HTML/XML Parser for Java [closed] 【发布时间】:2011-01-08 22:03:40 【问题描述】:哪些 html 解析器具有以下特点:
快速 线程安全 可靠且无错误 解析 HTML 和 XML 处理错误的 HTML 有一个 DOM 实现 支持 HTML4、javascript 和 CSS 标签 相对简单的面向对象的 API你认为哪个解析器更好?
谢谢。
【问题讨论】:
“支持 HTML4、javascript 和 CSS”是什么意思?解析器就是一个解析器,它不会解释您的页面。如果您想模拟浏览器,请改写您的问题。 没有。一些解析器不理解 CSS 之类的东西。这就是我的意思。 如果 CSS 在 【参考方案1】:查看Web Harvest。它既是您可以使用的库,又是数据提取工具,在我看来,这正是您想要做的。您创建 XML 脚本文件来指示抓取工具如何提取您需要的信息以及从何处提取信息。提供的 GUI 对于快速测试脚本非常有用。
查看project's samples page,看看它是否适合您尝试做的事情。
【讨论】:
+1 用于 Web Harvest ——如果您尝试进行页面抓取,这是可行的方法。【参考方案2】:最著名的是NekoHTML 和JTidy。
NekoHTML 基于 Xerces,并提供了一个简单的可适应的SAXParser,它实现了XMLReader JavaSE 接口。
JTidy 更倾向于将您的 html 代码格式化为 XML 有效的内容,但作为 XML 解析器仍然非常有用,如果需要可以生成 DOM 树。
您可以查看this list 以了解其他选择。
另一种选择是通过 jRuby 使用 hpricot。
【讨论】:
为什么?他们有哪些特点? SAX 不是我想要的,JTidy 的主要目的是清理 XML。你确定它比其他人做得更好吗? 那你到底想要什么? 它应该是基于 DOM 的。我想要提取,因为它的主要工作不是转型。 它的“主要”工作是什么并不重要,只要它做你想让它做的事情。【参考方案3】:Validator.nu's HTML parser,当然。它是 HTML5 解析算法的一种实现,Gecko 正在用 C++ 翻译替换它自己的 HTML 解析器。
【讨论】:
【参考方案4】:Apache Tika 是最好的选择。 Apache 最近从现有项目中提取了许多子项目并公开。 Tika 是其中之一,以前是 Apache Lucene 的一个组件。由于 Apache 的支持和声誉以及广泛使用的父项目 Lucene,它一定是一个非常不错的选择。此外,它是开源的。
来自Apache Tika网站的简介:
Apache Tika™ 工具包使用现有解析器库从各种文档中检测和提取元数据和结构化文本内容。
支持的格式有:
HyperText Markup Language XML and derived formats Microsoft Office document formats OpenDocument Format Portable Document Format Electronic Publication Format Rich Text Format Compression and packaging formats Text formats Audio formats Image formats Video formats Java class files and archives The mbox format
【讨论】:
Apache Tika 是一个很好的建议。即使您对阅读 XML/HTML/MS DOC 格式不感兴趣,您也可以指定“text/plain”。它将流入数据,因此不需要先预加载整个文件。福利清单:tika.apache.org/1.4/parser.html 附示例代码的文章:openlogic.com/wazi/bid/314389/Content-mining-with-Apache-Tika 我是为了一个可靠的 HTML 解析器而来,并留下了一个我不必花时间概括的东西。我喜欢这个游戏。【参考方案5】:嗯:
java 中没有你需要的那么多好的 HTML 解析器,但这里有一些替代方案: http://java-source.net/open-source/html-parsers
其中很少有人支持 Javascript。实际上,我认为您必须使用 Rhino (http://www.mozilla.org/rhino/) 自己完成这部分。
【讨论】:
【参考方案6】:我认为HTML Cleaner 是您正在寻找的。在 TheServerSide 上查看它的announcement,看看它与 JTidy、TagSoup、NekoHtml 的比较。
【讨论】:
但这也是为了转换成很好的XML。我的主要目标是从中提取数据。 @Shayan 那又怎样?它不允许您从中提取数据吗?它不提供 DOM 操作吗?它不允许解析讨厌的 HTML 吗?我不明白你。【参考方案7】:您可能想看看在无头模式下运行 Mozilla 之类的事情。这是一个link 帮助您入门,我相信您可以使用 Google 查找更多信息。
【讨论】:
以上是关于用于 Java 的 HTML/XML 解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用golang+antlr4构建一个自己的语言解析器(完结篇)
用于可迭代对象的 Java GraphQL 解析器:休眠异常