MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ruby解析html

Posted on 2010-02-20 18:14 leekiang 阅读(1128) 评论(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


只有注册用户登录后才能发表评论。


网站导航: