Ich habe Nokogiri verwendet, um nach CSS-Klasse zu suchen und erhielt diese Ausgabe. Ich möchte wählen: value = "E-Mail eine application-.com" von diesem Hash aber ich kann nicht herausfinden, wie. Das ist der Hash:
{"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">}
Ich habe versucht, die Werte mit auszuwählen
.select{|a| a["value"]}
aber das funktioniert nicht. Hat jemand irgendwelche Ideen?
Antworten:
1 für die Antwort № 1http://ruby.bastardsbook.com/chapters/html-parsing/
Dies ist im obigen Link gut abgedeckt.
Es könnte einfacher sein, den Namen zu wählen: Nach der Verwendung der entsprechenden css-Selektoren würde Ihre letzte Anweisung wie folgt aussehen:
page = Nokogiri::HTML(open(URL))
page.css(//some selectors...[title="name"])
0 für die Antwort № 2
Der einfachste Weg ist die Verwendung #attribute
auf dem Knoten.
page.css(a_selector).map{ |node| node.attribute("value") }
0 für die Antwort № 3
Behandle einen Knoten wie es ist ein Hash, wenn du auf ein Attribut zugreifen willst:
require "nokogiri"
doc = Nokogiri::HTML("<a href="foo">bar</a>")
doc.at("a")["href"] # => "foo"
Sie werden sehen, dass die Notation am häufigsten verwendet wird.
Alternativ können Sie diese verwenden:
doc.at("a").get_attribute("href") # => "foo"
doc.at("a").attr("href") # => "foo"
Diese sind in dokumentiert Nokogiris XML :: Node Dokumentation.