2013-08-26 46 views
1

我使用XPath来得到这样只返回一个XPath的价值 - 引入nokogiri红宝石

auction_page = Nokogiri::HTML open(a, "User-Agent" => theagent) 
auction_links = auction_page.xpath('//iframe[contains(@src, "near")]/@src') 

在网站上的一些值它返回什么,我需要这样的

#<Nokogiri::XML::Attr:0x3fcd7bef5730 name="src" value="http://thevalue.com"> 

我只是想要获得价值,而不是价值或其他任何东西。我该怎么做呢?

回答

3

我认为您正在寻找.text方法。

因此auction_links.text应返回“http://thevalue.com”。

编辑:

如果不行尝试,auction_links.first它会返回一个数组,我敢肯定,链接会在里面。 ; )

有关进一步的参考,这里是一个伟大的教程basic Nokogiri Crawling/Parsing

+1

嘿 - 足够有趣两个答案的工作,我会在2分钟内接受时,我允许。但是,如果我删除/ @ src,然后将它选为节点中的第7个值,我不知道该怎么做,但.first将仅适用于我。这不是七点七或七点。有什么想法吗? –

+0

.text是我需要的,虽然 –

+0

你会从''''''''数组中得到'x'th值。当Array从0开始计数时,请注意计算'x-1'。 –

0

你能做到这一点,如下:

require 'nokogiri' 

doc = Nokogiri::HTML::Document.parse <<-end 
<a id = "foo" class="bar baz" href = "www.test.com"> click here </a> 
end 

doc.at_xpath("//a[contains(@class,'bar')]/@href").to_s 
# => "www.test.com" 

所以你的情况,你可以这样写:

auction_page.at_xpath('//iframe[contains(@src, "near")]/@src').to_s 
# => "http://thevalue.com"