2012-07-27 24 views
0

我关于Ruby采用机械化,并注意到在我的Ruby控制台以下:XPATH指数不同?

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元素的第二个元素的不同结果中返回给一个不同的结果?

回答

3

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

search("b")[1]表示它找到的第二个b。它将是一个节点或零。

+0

“第二个b相对于它的父母”是什么意思,以及它如何发现超过一秒b? – wrongusername 2012-07-30 17:08:04

+1

例如在''有两个第一,相对于他们的两个第二个B元素,但只有三分之一的元素 – BeniBela 2012-07-30 23:55:44

+0

天上这一切现在是有道理的!非常感谢! – wrongusername 2012-07-31 01:24:22