Java 等价于 PHP Simple HTML DOM Parser
Posted
技术标签:
【中文标题】Java 等价于 PHP Simple HTML DOM Parser【英文标题】:Java equivalent to PHP Simple HTML DOM Parser 【发布时间】:2011-09-04 19:56:30 【问题描述】:由于我必须使用多线程,而我无法用 php 很好地解决我想用 Java 编程,不幸的是我找不到一个库可以让我像在 PHP Simple 中一样健壮、快速和轻松地解析 html DOM HTML DOM 解析器。您知道 Java 中同样易于使用的替代方法吗?
【问题讨论】:
【参考方案1】:我从 Simple HTML DOM Parser 转到 JSoup,对此我很满意。
【讨论】:
在深入研究时,我发现了一个,它展示了相当不错的功能和 API 列表。通过 CSS 选择器查找元素非常棒。 乍一看,JSoup 的功能甚至似乎超过了 PHP Simple HTML DOM Parser 的功能。现在我将它与第二个建议的 TagSoup 进行比较,这有什么优缺点吗? 使用 TagSoup、W3C DOM 和 DOM4J/JDOM 的方法应该可行,但比 JSoup 接缝要复杂。我也会试一试,因为从描述来看,这个项目对我来说非常好。【参考方案2】:我可以看到我们在这里面临两个挑战:
解析可能不是格式良好的 HTML,XHTML 易于解析且易于解析。我推荐TagSoup 库,它可以读取丑陋的 HTML 并生成格式良好的 StaX 流,然后可以在其他地方使用。
构建 HTML 文档的 DOM 表示并处理它。您可能知道在 JDK 中有完整的 XML DOM 实现 (org.w3c.dom.*
)。但我想这不是您一直在寻找的 API 类型。 DOM4J 或更早的JDOM 可以包装JDK Document 并且您可以享受易于使用的API?
【讨论】:
我一直在寻找选项一,解析在现实生活中 从来没有真正形成良好的 htm。使用 XPATH 访问 XML DOM 非常棘手,我只是在编写防弹代码时失败了。 TagSoup 似乎是一个不错的建议,现在的问题是 JSoup 或 TagSoup 哪个更适合我。【参考方案3】:我已经成功地使用 TagSoup 作为 SAX 解析器来填充 DOM4J 文档,然后我使用 XPath 进行查询。我花了一段时间才弄清楚咒语 - (Scala,但我相信你可以转换):
parserFactory = new org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl
val reader = new SAXReader(parserFactory.newSAXParser.getXMLReader)
val doc = reader.read(new InputSource(new StringReader(page)))
【讨论】:
以上是关于Java 等价于 PHP Simple HTML DOM Parser的主要内容,如果未能解决你的问题,请参考以下文章