Railsで取得したRSSの記事の本来のURLをparseする方法
取得したRSSの中に広告と閲覧測定のためのタグが入っていることがある。
ある企業の場合、広告のURLとlinkタグでは閲覧測定のためのURLを挟み、本来のURLは<******:origLink>******:origLink>で挟むような形式にて提供している。
Railsの場合、ほとんどはRubyのRSSパーサでこれを読み込もうとするが、RSSライブラリから<******:origLink>を簡単に読み込むことが出来ない。そこで、hpricotライブラリを用いて<******:origLink>タグが存在したら、そのの内容をにコピーする方針で解決を行う。
まず、gemにてhpricotライブラリを読み込む。
# Rails 2.x # config/environment.rb Rails::Initializer.run do |config| config.gem "hpricot" :
通常は以下のように読み込む。
rss = open(feed) do |file| rss_src = file.read RSS::Parser.parse(rss_src) end
下記のように書き換える。
rss = open(feed) do |file| rss_src = file.read xml = Hpricot.XML(rss_src) xml.search("******:origLink").each do |origLink| origLink.parent.at("link").inner_html = origLink.inner_html end RSS::Parser.parse(xml.to_html) end
xml.searchで<******:origLink>タグを全て列挙し、そのタグごとに内容をタグにコピーしていく。その内容をxml.to_htmlで出力を行う。