Posted on 2010-02-20 18:14
leekiang 阅读(1129)
评论(0) 编辑 收藏 所属分类:
ruby
open-uri库是ruby的标准附加库中所带的,路径
C:\Ruby1.8.7\lib\ruby\1.8\open-uri.rb
require 'open-uri'
open('c:/boot.ini'){|file|
puts file.class #File
}
open('http://coderlee.cnblogs.com'){|file|
puts file.class #Tempfile
}
可以看出,打开一个本机文件的块参数是File类型,而打开一个uri的块参数是一个Tempfile类型。还有一点要注意,就是open-uri里面的open方法会自动对302 redirection重定向地址进行追踪访问,而Net::HTTP#get方法则不会自动追踪302重定向地址。(摘自
这里)
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('http://www.huomo.cn'))
doc.search("//h2/a").each do |link|
puts link.inner_text
puts link[:href]
end
url = 'http://www.google.cn/search?hl=zh-CN&q=%BC%D6%B1%A6%D3%F1'
doc = Nokogiri::HTML.parse(open(url), nil, 'gb2312')#不这样写会有乱码
doc.css('h3.r a.l').each do |link|
puts link.inner_text
end
doc.xpath('//h3/a[@class="l"]').each do |link|
puts link.content
end
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
puts link.content
end
参考http://www.javaeye.com/topic/557485