プログラミング的なSomething

読者です 読者をやめる 読者になる 読者になる

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

sinatraの登竜門といえばRSSリーダー作成なのでRSSについてまとめてみたよ

猫も杓子もRSSリーダー

RSSリーダーって「まずはこれ!」みたいな感じなので実際に作ってみます。 まずはRSSの要素を読み込んでみましょう。

RSSライブラリで読み込むよ

require 'rss'

rss = RSS::Parser.parse('http://somethingpg.hatenablog.com/rss')

超簡単です。

このサイトのRSSなんですが、こんな感じです。

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>プログラミング的なSomething</title>
    <link>http://somethingpg.hatenablog.com/</link>
    <description>学習記録や気付いたこととか</description>
    <lastBuildDate>Sun, 02 Feb 2014 09:38:44 +0900</lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Hatena::Blog</generator>
    
      
        <item>
          <title>sinatraでアプリ書くために基本処理まとめ</title>
          <link>http://somethingpg.hatenablog.com/entry/2014/02/02/093844</link>
          <description>&lt;h1&gt;&lt;a class=&quot;keyword&quo・・・
     以下、実際の記事

要はここに載っている要素を呼び出してあげればOKです。

Channel要素とitem要素をそれぞれ呼び出してみた

コードは以下の通り。使い方の確認って感じです。

require 'rss'
rss = RSS::Parser.parse('http://somethingpg.hatenablog.com/rss')

# Channel要素の呼び出しは直感的
p rss.channel.title
p rss.channel.link
p rss.channel.description
p rss.channel.lastBuildDate
p rss.channel.docs
p rss.channel.generator

rss.items.each do |item|
  # RSS:Rss#itemsはRSS::Rss::Channel::Itemクラス全てを格納した配列を呼び出す
  p item.class #=> RSS:Rss::Channel::Item
  p item.title
  p item.date
  p item.link 
  # descriptionは長大になるため省略
  # p item.description
end

# 以下処理結果
"sinatraでアプリ書くために基本処理まとめ"
2014-02-02 09:38:44 +0900
"http://somethingpg.hatenablog.com/entry/2014/02/02/093844"
"__END__と定数DATAに関して"
2014-02-01 07:02:41 +0900
"http://somethingpg.hatenablog.com/entry/2014/02/01/070241"
"Rubyのselfがめっちゃよくわかるサンプルコード"
2014-01-31 09:12:09 +0900
"http://somethingpg.hatenablog.com/entry/2014/01/31/091209"
"特異メソッドとその用途Singletonパターン"
2014-01-30 22:45:32 +0900
"http://somethingpg.hatenablog.com/entry/2014/01/30/224532"
"attr_accessorの使い方"
2014-01-29 07:55:29 +0900
"http://somethingpg.hatenablog.com/entry/2014/01/29/075529"
"クロージャーとしてのブロックの扱い"
2014-01-24 08:02:25 +0900
"http://somethingpg.hatenablog.com/entry/2014/01/24/080225"
"Rubyにおいて多値を返す場合のお作法"
2014-01-23 07:48:24 +0900
"http://somethingpg.hatenablog.com/entry/2014/01/23/074824"

参考

library rss