2016-02-09 44 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記錄。