調子に乗ってRSSもスクレープしてDBへ

勢いづいて、RSSもDBに格納するスクリプトを書いた。以下は解析した内容を表示する部分。RSSを解析するライブラリがあるのでとっても簡単です。ActiveRecordの使い方も (必要に迫られている処理については) 分かってきたのでより短時間で実現できるようになった。いい感じです。

ちなみに確認したのはYAHOO!ブログが出力しているRSS。他のところだとdescriptionあたりが入っていなくてうまく動かないかもしれない。これはゆくゆくあちこちのコンテンツに対応していく上で検証することにします。


#!/usr/bin/ruby
require ‘open-uri’
require ‘rss’
require ‘kconv’
PARSE_URL = “test.rss”
TAG_REGEXP = /<(?:[^”‘>]*|”[^”]*”|’[^’]*’)+>/
rss = nil
begin
rss = RSS::Parser.parse(PARSE_URL)
rescue RSS::InvalidRSSError
rss = RSS::Parser.parse(PARSE_URL, false)
end

rss.items.each do |i|
description = i.description.gsub(//, “¥n”).gsub(TAG_REGEXP, ‘’)
link = i.link.gsub(/^.*?¥*/,’’)
puts “title = #{i.title}”
puts “date = #{i.pubDate}”
puts “link = #{link}”
puts “description = #{description}”
end