RSSフィードによってはimage情報が取得できないものもあるだが、大体のRSSはFeedjiraが解析したcontentの中に情報が含まれる。
Gemfile
gem 'feedjira' gem 'nokogiri'
$ bundle install
を済ませておく。
RSSの解析
とても簡単。
rss = Feedjira::Feed.fetch_and_parse "https://rssのURL"
これが記事ごとの配列になっているので、記事単位へのアクセスは
item = rss[0]
となる。
各要素は以下のようなものとなる
item.title #記事のタイトル item.published #記事の公開日 item.url #記事のURL item.categories #記事の関連づけられたカテゴリーが配列で入る。これはアメブロ等フィードされないRSSもある。メタデータ次第ではundefined methodになるケースもあるので、アクセスする場合、item.respond_to?(:categories)で調べる必要がある。 item.content #Feedjiraが記事内容をhtml化したもの
画像情報の抽出
記事内にある画像情報がフィードされていた場合、Feedjiraがitem.content内にimage情報をタグとして書き出しているので、これをNokogiriを使って抽出すればよい。
document = Nokogiri::HTML.parse(item.content, nil, "utf-8") images = document.css('img')
imagesには配列が入るのであとは必要な分だけsrc属性を取得する。
document = Nokogiri::HTML.parse(item.content, nil, "utf-8") image = nil document.css('img').each do |src| image = src.attribute("src").value break end