RubyでブログURLからRSSを自動的に発見してエントリーリストを取得する方法
先月、Twitbackerという、ブログからPingを受け取って「エントリータイトル+URL」をTwitterにPOSTするというツールを作りました。
このTwitbacker、なんともSEO的に強力なツールで、作った時には「Twitbacker」でグーグル検索した時の検索結果が1件も無かったのに、翌週には10,000件を超えていました!!TwitterのFriends(Followers?)が多い人なら、これを使うだけで簡単にブログのアクセスアップも図れます♪
と、まぁ紹介はこのくらいにして、Twitbackerの開発時にいくつか調べたりしたことがあるので、ちょっとそのシリーズでいろいろ書いてみます。
Twitbacker - Pingでブログの更新情報をTwitterに!!
まずPress14号は、「ブログURLからRSSを自動的に発見してエントリーリストを取得する」方法。
RSSのURL取得には、「net-discover」というライブラリを利用すると、簡単です。これを使えばRSS取得はたったの1行。
-
feeds = URI.parse(url).discover_rss
これで、feedsにRSSのURLのリストが入ります。(RSSが複数ある場合)
また、RSSの解析には「simpleRSS」というツールを使います。これはgemでインストールできます。
-
gem install simple-rss
RSSの解析はこれまた1行。
-
rss = SimpleRSS.new(content)
これらを使って、ブログのURLを受け取ってRSSの中身をObjectにして返すクラス、RSSParserってのを作ってみました。
(同じ名前のライブラリが既にあったけど、いろいろ機能ある割によくわかんなかったので、自分で作った。)
-
require 'open-uri'
-
require 'net/discover'
-
require 'rubygems'
-
require 'simple-rss'
-
-
class RSSParser
-
def self.parse( url )
-
feeds = URI.parse(url).discover_rss
-
contents = Array.new
-
open(feeds.first) do |rss_contents|
-
contents = rss_contents.read
-
end
-
rss = SimpleRSS.new(content)
-
rss.items
-
end
-
end
こんな感じで使います。
-
@items = RSSParser::parse("http://blog.matake.jp/")
-
puts @items.first.title
-
puts @items.first.link
-
puts @items.first.description if @items.first.description
-
puts @items.first.summary if @items.first.summary




この記事がお役に立ちましたら、一言コメントもらえると嬉しいですm_ _m