【问题标题】:Java equivalent to PHP Simple HTML DOM ParserJava 等价于 PHP Simple HTML DOM Parser
【发布时间】:2011-09-04 19:56:30
【问题描述】:

由于我必须使用多线程,而我无法用 PHP 很好地解决我想用 Java 编程,不幸的是我找不到一个库可以让我像在 PHP Simple 中一样健壮、快速和轻松地解析 HTML DOM HTML DOM 解析器。您知道 Java 中同样易于使用的替代方法吗?

【问题讨论】:

    标签: java html dom


    【解决方案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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 2014-09-04
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多