【问题标题】:Java Html Parser that supports XPath Axes?支持 XPath 轴的 Java Html 解析器?
【发布时间】:2013-10-22 18:32:22
【问题描述】:

以下是我需要关联“标题”的 html 文档片段 - 例如FILE_BYTES_WRITTEN - 第一个成功的 text() 条目。

以下 xpath 在 python lxml 中效果很好:

/td[text()='FILE_BYTES_WRITTEN']/following-sibling::td

文档片段:

   <td>HDFS_BYTES_READ</td>
   <td align="right">4,825</td>
   <td align="right">0</td>
   <td align="right">4,825</td>
 </tr>

   <tr>

   <td>FILE_BYTES_WRITTEN</td>
   <td align="right">415,881</td>
   <td align="right">48,133</td>
   <td align="right">464,014</td>
 </tr>

   <tr>

   <td>HDFS_BYTES_WRITTEN</td>
   <td align="right">98,580,205</td>
   <td align="right">2,010</td>
   <td align="right">98,582,215</td>
 </tr>

但是当我尝试在 Java 中执行此操作时,我的成功率较低。我不确定是否有任何 java html 解析器可以支持这一点。我目前正在使用 HtmlCleaner。

【问题讨论】:

    标签: java xpath axes


    【解决方案1】:

    您可以查看HtmlUnit,它具有很好的getByXPath() 功能。这是一个朴实无华的浏览器。尝试查看示例。

    另一个我用来解析并且最喜欢的是Jsoup,它具有强大的select(query) 功能,可以轻松完成这些事情。查看其selector class 文档。你会找到你需要的一切。

    【讨论】:

      【解决方案2】:

      作为序言:我确实会按照@Sage 的建议查看 HtmlUnit。

      与此同时:我想出了以下解决方案:

      a) HtmlCleaner 实际上有一个 DomSerializer 用于转换为 XHtml:

      public static Document toXhtml(String html) throws ParserConfigurationException {
          HtmlCleaner cleaner = new HtmlCleaner();
          TagNode tagNode = cleaner.clean(html);
          DomSerializer domSerializer = new DomSerializer(new CleanerProperties());
          return domSerializer.createDOM(tagNode);
      }
      

      b) 在我们拥有 XHtml 的时候,我们有很多选择 - 例如,只需使用 xalan..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 2012-07-12
        • 1970-01-01
        • 2014-05-10
        • 2015-07-28
        • 2014-07-06
        相关资源
        最近更新 更多