/ / Nokogiri - Wie wählt man das Attribut "value" aus der nokogiri-Seitensuche - ruby-on-rails, ruby, nokogiri

Nokogiri - Wie wählt man das Attribut "value" aus nokogiri page search - ruby-on-rails, ruby, nokogiri

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 № 1

http://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.