RSS フィードを処理する
open-uri でこの日記のフィードを取得して rss/1.0 で parse するというのをしてみます。
#!/usr/local/bin/ruby require 'open-uri' require 'rss/1.0' content = Kernel.open('http://d.hatena.ne.jp/rubyo/rss') rss = RSS::Parser::parse(content.read) puts rss.channel.link rss.items.each do |item| puts item.link end
実行してみます。
$ ruby rss.rb http://d.hatena.ne.jp/rubyo/ http://d.hatena.ne.jp/rubyo/20060402#1143960117 http://d.hatena.ne.jp/rubyo/20060402#1143959638 http://d.hatena.ne.jp/rubyo/20060402#1143959222 http://d.hatena.ne.jp/rubyo/20060402#1143957895 http://d.hatena.ne.jp/rubyo/20060402#1143957874
- parse して帰ってきたオブジェクトのクラスは
rss.class
で見てみたところ RSS::RDF クラス(?) のようです。 - フィードの channel 要素には
rss.channel
でアクセスします。 - 各アイテムは
rss.items
で Array で返ってくるようなので、この Array に each でアクセスします。 - ここでは処理していませんが、parse に失敗場合は RSS::InvalidRSSError が throw されるのでこれをキャッチしてやれば例外処理が可能のようです。
まだ分かっていないことがいくつかあります。