>我使用Nokogiri按css类搜索并收到了这个输出。我想从这个哈希中选择:value="通过电子邮件发送 application-.com",但我不知道怎么做。这是哈希:
{"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']}
但这行不通。有人有什么想法吗?
http://ruby.bastardsbook.com/chapters/html-parsing/
这在上面的链接中得到了很好的介绍。
选择名称可能更容易:即在使用适当的 CSS 选择器后,您的最后一条语句将如下所示:
page = Nokogiri::HTML(open(URL))
page.css(//some selectors...[title="name"])
最简单的方法是在节点上使用#attribute
。
page.css(a_selector).map{ |node| node.attribute('value') }
如果要访问属性,请将节点视为哈希:
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的XML::Node文档中。