その他
    ホーム 技術発信 DoRuby rubyでRSSを取得する

    rubyでRSSを取得する

    この記事はアピリッツの技術ブログ「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

    無事に取得出来ましたね。

    皆さんも試してみてはいかがでしょうか。