0

假设以下文件:

<html>
  <body>
    <div>
      <a href="home.htm">Home</a>
    </div>
    <div>
      <a href="page.htm">Link to a page</a>
      <b>Bold text</b>
      <a href="page2.htm">Link to another page</a>
    </div>
   </body>
</html>

如果我运行这个 xPath,我会得到以下结果:

/html/body/div/a/text() -> HomeLink to a pageLink to another page

我正在寻找一种对结果进行逆向工程并尽可能简单地提取单个 xPath 选择器及其关联结果的方法。比如:

/html/body/div[1]/a[1]/text() <-> Home
/html/body/div[2]/a[1]/text() <-> Link to a page
/html/body/div[2]/a[2]/text() <-> Link to another page

我可以通过遍历 DOM 树或 SAX 解析来猜测一些复杂的程序,但看起来太复杂了。

有人能想出一个更简单的方法来在 xPath 中实现这个结果吗(也许还有一点 Java 的帮助)?基本上,问题是要知道每个标签的每个索引以及每个成功组合的相关结果。

谢谢

4

1 回答 1

0

不幸的是,我不知道java。

这是使用 nokogiri gem 的示例 Ruby 代码:

require 'nokogiri'
doc = Nokogiri::HTML open('/tmp/input.html')
doc.xpath('//a//text()').each {|a| puts "#{a.path} -> #{a.text}" }
于 2013-08-11T11:14:06.050 回答