nokogiri gem中nth-last-of-type和nth-last-child的替代品

时间:2013-08-03 09:12:37

标签: ruby css3 nokogiri

我正在使用nokogiri gem,我想提取分页的最后一个数字(4):nth-​​last-of-type(3)或nth-last-child(3)但在我的红宝石中显示0测试。

<ul class="pag">
    <li class="pag-first">first</li>
    <li class="pag-item"><a href"#">2</a></li>
    <li class="pag-item"><a href"#">3</a></li>
    <li class="pag-item"><a href"#">4</a></li>
    <li class="pag-next"><a href"#">next</a></li>
    <li class="pag-last"><a href"#">last</a></li>
</ul>

我的问题是,如果存在另一种替代方法,可以使用nokogiri gem中的另一个css3属性获取最后一个数字(4)。

我的css示例正在此处运行:http://jsfiddle.net/kfDgR/

我希望,你可以指导我,

2 个答案:

答案 0 :(得分:1)

您需要小心last-childlast-of-type,它们并不总是意味着您的想法,而且规格含糊不清。我建议:

doc.search('li.pag-item').last

答案 1 :(得分:0)

使用XPATH很有用:

require 'nokogiri'

doc = Nokogiri::HTML::Document.parse <<-_HTML_
<ul class="pag">
    <li class="pag-first">first</li>
    <li class="pag-item"><a href"#">2</a></li>
    <li class="pag-item"><a href"#">3</a></li>
    <li class="pag-item"><a href"#">4</a></li>
    <li class="pag-next"><a href"#">next</a></li>
    <li class="pag-last"><a href"#">last</a></li>
</ul>
_HTML_

doc.at("//ul[@class = 'pag']/li[4]").text
# => "4"

doc.at("//li[@class='pag-item'][last()]").text
# => "4"