我在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
元素的第二个元素,从而产生不同的结果?
答案 0 :(得分:3)
search("b[2]")
表示相对于其的第二个b
b
父元素。它将是一个NodeSet,它可能有多个元素。
search("b")[1]
表示它找到的第二个b
。它将是Node或nil。