是否有标准 Java SE HTML 解析器?如果是这样,为什么要使用非标准的呢?

nec*_*cer 5 html java html-parsing html-parser

我需要解析一个简单的 HTML 页面,其中包含一个简单的表单。StackOverflow 上类似问题的答案建议使用多种非标准 Java 库之一,例如 TagSoup、JSoup、HTMLParser 等。

然而,网络搜索显示,Java SE 中通过此类存在一些标准功能:http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/ParserDelegator.html

我的子问题是:

  1. 标准 ParserDelegator 类真的可以解析像我这样的用例吗?
  2. 标准库有哪些限制导致需要如此多的非标准库?
  3. ParserDelegator 处于 swing 状态这一事实是否妨碍在常规 EC2 云服务器中将其用于 Web 应用程序?我是否需要克服很多困难才能解决无头方面的问题,或者只是对配置进行一个小调整?
  4. 如果不推荐标准的,我应该使用哪种非标准的,考虑到: (a) 我希望不偏离标准太远;(b) 我的简单用例;(c) 希望有成熟可靠的实施方案;(d) 没有尺寸或重量限制,因为这是一个服务器应用程序而不是嵌入式客户端。API 的优先级要低得多,因此虽然我确实欣赏 JSoup 的 CSS 选择器(如 API),但其他关注点(a)到(d)会覆盖它。

谢谢。

Ale*_*exR 5

JDK 内置了 HTML 解析器,支持 HTML 1.0 左右。它应该支持解析基本文本格式标签和表单。

使用其他第三方解析器的原因是需要支持“真实”HTML 页面 DHTML、JavaScript 等。

JSoup 是可以完成这项工作的流行解析器之一。有关其他实现的更多信息,请查看以下讨论:

用于可滚动窗格的纯 Java HTML 查看器/渲染器

  • 谢谢 - 我想重新表述一下,它有内置解析器,除了古老版本的 HTML 之外,无法处理任何内容。该链接没有帮助。它与查看器/渲染器有关,而我需要一个解析器。 (2认同)