この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは。T氏です。
今日はrubyでRSSを取得する方法をご紹介します。
rubyにはRSSを取得するためのクラスが用意されているため、それを使ったサンプル
を作成しました。
クラスは [RUBY_HOME]/rss/**.rb に色々と用意されています。
※rubyは1.8.7 を使っています。
# sample.rb
class Sample
require 'rss'
require 'uri'
attr_accessor :title, :description, :link, :published_at
def initialize
@title = nil
@description = nil
@link = nil
@published_at = nil
end
def self.get_rss(rss_url)
begin
ary = []
unless rss_url.nil?
rss_results = ""
url = URI.parse(rss_url).normalize
open(url) do |http|
response = http.read
rss_results = RSS::Parser.parse(response, false)
rss_results.items.each do |item|
obj = self.new
obj.title = item.title
obj.description = item.description
obj.link = item.link
obj.published_at = item.date
ary << obj
end
end
end
return ary
rescue => e
raise e
end
end
end
さて、実際に使ってみましょう。
ここではDoRuby!記事のRSSを取得しています。
$ irb -Ku
irb(main):001:0> require 'pp'
irb(main):002:0> require 'sample'
irb(main):003:0> rss = Sample.get_rss('http://doruby.kbmj.com/t_article/20091118/Rake_/feed')
irb(main):004:0> pp rss
[# "こんにちは。T氏です。今日は自作のRakeタスクを追加する方法をご紹介します。 ",
@link="http://doruby.kbmj.com/t_article/20091118/Rake_",
@published_at=Wed Nov 18 10:00:00 +0900 2009,
@title="Rakeタスクを追加する">,
# @description=
"こんにちは。T氏です。 最近は、ようやくRailsの開発にも慣れてきました。慣れてくると、
Rails以外のフレームワークも使ってみたいな、なんて思ったりします。 そこで、以前から
気になっていたMerbのインストールから起動までをご紹介したいと思います。 \n",
@link="http://doruby.kbmj.com/t_article/20090915/Merb_1",
@published_at=Tue Sep 15 19:00:00 +0900 2009,
@title="Merbを使ってみる">,
# @description=
"こんにちは。T氏です。\n\n今日はRailsのエラー画面(public/404.htmlや500.html)への遷移は
どうやってされているかをご紹介します。",
@link="http://doruby.kbmj.com/t_article/20090604/Rails_",
@published_at=Thu Jun 04 19:47:37 +0900 2009,
@title="Railsのエラー画面への処理を読む">,
# @description=
"はじめまして!KBMJでエンジニアをやっているT氏です。初投稿の今回は、rakeコマンド
についてご紹介したいと思います。*rakeとは・・・ビルドツール(AntやMake等)のruby##の事 ",
@link="http://doruby.kbmj.com/t_article/20090317/_rake_1",
@published_at=Tue Mar 17 18:10:00 +0900 2009,
@title=
"Ruby on Railsでrakeコマンドを使って様々なタスクを実行しよう">]
irb(main):005:0> exit
無事に取得出来ましたね。
皆さんも試してみてはいかがでしょうか。