RSSの解析
Rubyの勉強
RSS Parserを使用することで取得したRSS内の情報を簡単にとりだすことが可能。以下ははてなのこのページのRSS情報をrss.xmlというファイルにしてから解析を行ったもの。Windows環境で行ったため出力をSJISに変換している。
参考サイト:http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser
でも、ケロログ(http://www.voiceblog.jp/)のRSSだとエラーになるんだよなぁ、何でだろ?
require 'kconv' # UTF8をSJISに変換 require 'rss/1.0' require 'rss/2.0' require 'rss/dublincore' # dc:xxx に対応 rss = nil sts = 0 begin sts = 1 f = File.open("F:/ruby_RDE/rss.xml") # F:\ruby_RDE\rss.xml rss = RSS::Parser.parse(f) rescue RSS::InvalidRSSError sts = 2 rss = RSS::Parser.parse(f, false) ensure f.close p "sts=" + sts.to_s end puts "# --- channel ---" puts " About : " + rss.channel.about.tosjis puts " Title : " + rss.channel.title.tosjis puts " Link : " + rss.channel.link.tosjis puts "Description : " + rss.channel.description.tosjis # itemを指定して取得 puts "# --- item(1) ---" puts " Title : " + rss.item(1).title.tosjis # itemを一括取得 puts "# --- items ---" rss.items.each do |item| puts "-------------------------------------" puts " Title : " + item.title.tosjis puts " Link : " + item.link.tosjis puts "Description : " + item.description.tosjis puts " DC:date : " + item.dc_date.to_s puts " DC:creator : " + item.dc_creator.tosjis item.dc_subjects.each do |subject| puts " DC:subject : " + subject.content.tosjis end end
出力
"sts=1" # --- channel --- About : http://d.hatena.ne.jp/hake/rss Title : はけの徒然日記 Link : http://d.hatena.ne.jp/hake/ Description : はけの徒然日記 # --- item(1) --- Title : [zaurus][ruby]Rubyでwiki # --- items --- ------------------------------------- Title : [ruby]Kernel#block_given? Link : http://d.hatena.ne.jp/hake/20060901/p1 Description : Rubyの勉強 WEBrickのサンプルで出てきた記述。メソッドでブロック付きと無しで違う動作が定義できるみたいです。 DC:date : 2006-09-01T00:00:00+09:00 DC:creator : hake DC:subject : ruby ------------------------------------- Title : [zaurus][ruby]Rubyでwiki Link : http://d.hatena.ne.jp/hake/20060831/p2 Description : HikiというRubyで書かれたWikiクローンがあったので昨日のwebrick上で動かしてみました。(以下略) DC:date : 2006-08-31T00:00:00+09:00 DC:creator : hake DC:subject : zaurus DC:subject : ruby 以下略