下面是一个例子来帮助你,如何提取HREF atttribute:
require 'nokogiri'
doc = Nokogiri::HTML.parse <<-eot
<a name="html" href = "http://foo">HTML Tutorial</a><br>
<a name="css" href = "http://fooz">CSS Tutorial</a><br>
<a name="xml" href = "http://fiz">XML Tutorial</a><br>
<a href="/js/">JavaScript Tutorial</a>
eot
doc.search("//a").class # => Nokogiri::XML::NodeSet
doc.search("//a").each {|nd| puts nd['href'] }
doc.search("//a").map(&:class)
# => [Nokogiri::XML::Element, Nokogiri::XML::Element, Nokogiri::XML::Element,
# Nokogiri::XML::Element]
输出:
http://foo
http://fooz>CSS Tutorial</a><br>
<a name=
/js/
基本上doc.search("//a")
会给你节点集,这只不过是Nokogiri::XML::Node
(s)的一个集合。您可以使用方法Nokogiri::XML::Node#[]
来获得属性va任何特定节点的lue。 Nokogiri将属性/值对保存为散列。看下面:
require 'nokogiri'
doc = Nokogiri::HTML.parse <<-eot
<a target="_blank" class="tryitbtn" href="tryit.asp?filename=try_methods">Try it yourself »</a>
eot
doc.at('a').keys
# => ["target", "class", "href"]
doc.at('a').values
# => ["_blank", "tryitbtn", "tryit.asp?filename=try_methods"]
doc.at('a')['target'] # => "_blank"
doc.at('a')['class'] # => "tryitbtn"
我不希望每页//标签在页面上,虽然。 – David
尽管这确实奏效 - tablerow.search(“// a”)。each {| nd |放nd ['href']} – David
@David是的,这是诀窍,我想告诉你.. –