用于清理 HTML 的 Java 库,就像浏览器一样
Posted
技术标签:
【中文标题】用于清理 HTML 的 Java 库,就像浏览器一样【英文标题】:Java library for cleaning up HTML just like a browser would 【发布时间】:2011-09-01 01:39:06 【问题描述】:所以挑战来了...我需要从野外的随机网页创建干净的 html。我的目标是读入一个页面并将其传递给一个库,这反过来又会给我返回格式完美的 HTML。
听起来没那么难,对吧?毕竟,市场上的每个浏览器都有效地应对了格式错误的 HTML 的挑战,并将其转化为几乎可以在每次页面加载时呈现的内容。每个都有自己的用于清理内容的稍微特殊的算法(嗯……对于 HTML
要提一提的是,我对将 HTML 解析为 XML 一点也不感兴趣。我发现 NekoHTML、TagSoup、HtmlCleaner 和 JTidy(仅举几例)等库更专注于解决将 HTML 转换为有效 XML 的问题,并且在此过程中,他们忽略了糟糕的格式化的文档应该重新构造。对于讨厌的 HTML,它们经常无法捕捉作者的意图,并吐出呈现与原始源完全不同的文档。对于这个项目,最重要的是两个文档呈现相似。
我非常喜欢 Jericho HTML,但它似乎不是这份工作的理想人选……至少我付出了很多努力。另外,原生依赖是不行的,所以 mozilla 解析器已经出局了。
谁能帮助我寻找完美的 HTML 解析器?提前致谢!
【问题讨论】:
向我定义格式错误的 HTML...您指的是正确的缩进还是一般的格式错误的 HTML。后者的范围要大得多。 我们肯定说的是后者。对于这个项目,我必须拉入一个网页,应用一些转换,然后将结果显示给用户。如果格式/布局与预处理的 HTML 明显不同,我就有麻烦了。 【参考方案1】:JSoup我会说
另见
which-html-parser-is-best【讨论】:
感谢其他问题的链接。我以前看过那个,并追查了一些链接,尽管我得出的结论是我的问题略有不同。我现在正在评估 JSoup,它看起来很有希望。我之前跳过了它,因为它的名字与 TagSoup 非常接近,以至于我认为它们是相同的。 ;) 用了一天之后,我可以正式地说这个库很牛。非常感谢!【参考方案2】:我以前用过HTML Tidy。
【讨论】:
咦……好像时隔8年第一次在2009年发布了一个版本。我过去也使用过 Tidy,但即使在那时我也感到不知所措。也许大约五年前,我开始了一个项目(这次我是在解析 HTML -> XML)并最终改用 NekoHTML(现在也有点死了)。【参考方案3】:TagSoup?
【讨论】:
谢谢,但不幸的是,该库属于“让我们将 HTML 转换为 XML”的阵营。我已经对其进行了评估并将其丢弃,因为它给了我呈现与源代码不同的 HTML。以上是关于用于清理 HTML 的 Java 库,就像浏览器一样的主要内容,如果未能解决你的问题,请参考以下文章