我决定尝试一下 Nokogiri,并直接从http://nokogiri.rubyforge.org/nokogiri/Nokogiri.html复制以下程序(仅添加require 'rubygems'
和I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2
常量):
require 'rubygems'
I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 = 1
require 'nokogiri'
require 'open-uri'
# Get a Nokogiri::HTML:Document for the page we’re interested in...
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
# Do funky things with it using Nokogiri::XML::Node methods...
####
# Search for nodes by css
doc.css('h3.r a.l').each do |link|
puts link.content
end
它没有返回任何结果。但是当我改变
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
到
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove').read)
该程序按预期工作。请注意,唯一的区别是在行尾添加了 .read。我自己永远也想不通,因为几乎每一点示例代码都离开了 .read。具有讽刺意味的是,包含它的一个地方是 Nokogiri 开发人员之一的帖子(在http://tenderlovemaking.com/2008/11/18/underpant-free-excitement)。API 中的某些内容是否发生了变化?我错过了什么?
我正在使用 Nokogiri 1.3.2。
谢谢你。