【问题标题】:XPATH indices different?XPATH 索引不同?
【发布时间】:2012-07-27 21:14:03
【问题描述】:

我在 Ruby 上使用 Mechanize,并在我的 Ruby 控制台中注意到以下内容:

1.9.3p194 :188 > testpage = Mechanize.new.get "http://www.sis.umd.edu/bin/soc?term=201208&crs=AGNR"
...
1.9.3p194 :184 > testpage.search("font[@face='arial,helvetica']").last.search("b[2]").text
 => "" 
1.9.3p194 :185 > testpage.search("font[@face='arial,helvetica']").last.search("b")[1].text
 => "Special Problems:\nSpecial Problems;"

为什么访问 XPATH 中的第二个 b 元素会产生不同的结果,而不是访问返回的所有 Nokogiri b 元素的第二个元素会产生不同的结果?

【问题讨论】:

    标签: ruby xpath nokogiri mechanize


    【解决方案1】:

    search("b[2]") 表示任何 b 相对于它的第二个 b 父元素。它将是一个 NodeSet,并且可能有多个元素。

    search("b")[1] 表示它找到的第二个b。它将是 Node 或 nil。

    【讨论】:

    • “第二个 b 相对于它的父级”是什么意思,它找到的 b 怎么可能超过一秒?
    • 例如在<a><b/><b/></a> <a><b/><b/><b/></a> 中有两个第一个和两个第二个 b 元素相对于它们的 a,但只有一个第三个元素
    • 哦,现在一切都说得通了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2013-06-09
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多