编写一个带有Open URI的简单Ruby脚本

时间:2011-08-12 07:09:46

标签: ruby screen-scraping nokogiri

我正在用Ruby构建一个简单的新闻聚合器。我对语言完全不熟悉,我刚刚发现了如何使用open uri函数。

现在,我的问题是如何解析html页面。 Ruby中是否有内置的解析器。

不过,我不使用rails,我希望它非常简单

提前致谢!

2 个答案:

答案 0 :(得分:4)

要解析HTML我建议Nokogiri。特性:

  • XPath支持文档搜索
  • CSS3选择器支持文档搜索
  • XML / HTML构建器

有一个关于screen scraping with Nokogiri的精彩截屏视频。

答案 1 :(得分:1)

简单的答案是肯定的,有一个解析器。我不能在不知道你想从html中提取什么的情况下具体回答你的问题,但我在下面提供了一些源代码。如果你能够阅读ruby代码,那么这是非常自我解释的。

require 'open-uri'
require 'pp'
open('http://ruby-lang.org') do |f|
puts "URI: #{f.base_uri}"
puts "Content-type: #{f.content_type}, charset: #{f.charset}"
puts "Encoding: #{f.content_encoding}"
puts "Last modified: #{f.last_modified}"
puts "Status: #{f.status.inspect}"
pp f.meta
puts "----"
3.times {|i| puts "#{i}: #{f.gets}" }
end

产生

URI: http://www.ruby-lang.org/en/
Content-type: text/html, charset: utf-8
Encoding: []
Last modified:
Status: ["200", "OK"]
{"date"=>"Mon, 15 Nov 2010 17:54:07 GMT",
"server"=>
"Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ruby/1.2.6 Ruby/1.8.5(2006-08-25)",
"transfer-encoding"=>"chunked",
"content-type"=>"text/html;charset=utf-8"}
----
0: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
1: "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2: <html xmlns="http://www.w3.org/1999/xhtml">

以下是显示如何使用open-uri的示例的另一个链接:http://juretta.com/log/2006/08/13/ruby_net_http_and_open-uri/