2016-02-09 60 views
0

我已经使用Nokogiri通过CSS类搜索并收到了这个输出。我想从这个哈希值中选择:value =“E-Mail an application-.com”,但我不知道如何。这是哈希:Nokogiri - 如何从nokogiri页面搜索中选择属性“值”

{"href"=>#<Nokogiri::XML::Attr:0x3fe935c500b8 name="href" 
value="http://.com">, "chars"=>#<Nokogiri::XML::Attr:0x3fe935c500a4  
name="chars" value="q|c|.|i|@|l|t|e|j|o|a|m|u|n|p">, "chars_index"=># 
<Nokogiri::XML::Attr:0x3fe935c50090 name="chars_index" 
value="10|14|14|5|3|1|10|6|3|9|13|4|8|12|13|3|0|7|2|1|9|11">, "title"=>#  
<Nokogiri::XML::Attr:0x3fe935c5007c name="title" value="E-Mail an 
application-.com">} 

我曾尝试使用

.select{|a| a['value']} 

选择值,但这个不起作用。有没有人有任何想法?

+2

欢迎来到Stack Overflow。这在Nokogiri文档和关于SO的问题中有很好的介绍。询问时,我们需要最小的HTML,而不是检查变量的输出。请阅读“[问]”和“[mcve]”。 –

回答

0

http://ruby.bastardsbook.com/chapters/html-parsing/

这在上面的链接很好地覆盖。

这可能是更容易选择名称:

page = Nokogiri::HTML(open(URL)) 

page.css(//some selectors...[title="name"]) 
+0

有趣的参考! –

+0

这个方法对我来说不起作用,虽然我发现了下面这样做了page.css(“。selector”)[0] ['title'] – phil

+0

是的,它工作正常:) – Turk

0

最简单的方法是在节点上使用#attribute:使用适当的CSS选择器后 即,你的最后一句话想看看。

page.css(a_selector).map{ |node| node.attribute('value') } 
0

像对待它节点的哈希,如果你要访问一个属性:

require 'nokogiri' 

doc = Nokogiri::HTML('<a href="foo">bar</a>') 
doc.at('a')['href'] # => "foo" 

你会看到最常用的那个符号。

或者您可以使用这些:

doc.at('a').get_attribute('href') # => "foo" 
doc.at('a').attr('href')   # => "foo" 

这些在Nokogiri's XML::Node documentation记录。