hakeの日記

Windows環境でプログラミングの勉強をしています。

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

以下略