Railsでスクレイピングの際に画像サイズを調べてごにょごにょする。

Railsでウェブページをスクレイピングする時に要らない画像とかを省きたかったので調べた。Nokogiri と RMagick使います。

ウェブページからサムネイルを自動生成させようと思ったら、SNSボタンとか取ってきてしまって、全然意味のないサムネになってしまった。ので、そういう小さい画像は省きたい!って時。

Gemfile

gem 'nokogiri'
gem 'rmagick'

config/application.rb

require 'RMagick'

controllers/your_controller.rb

#URL開く
html = open("http://www.yoru_url.com").read

#Nokogiriでパース
parsed_html = Nokogiri::HTML(html)

#imgタグだけ取得
images = parsed_html.css('img')

# 100 x 100pxの画像があるかチェック
if images.present?
    # Check the size with RMagick
    proper_image = ""
    images.each do |image|
        url = image.attributes["src"].value
        rm_image = Magick::ImageList.new(url)
        if rm_image.columns >= 100 && rm_image.rows >= 100
            proper_image = image
            break
        end
    end
    if proper_image.present?
      puts "100 x 100px 以上の画像があったぜ!"
    end 
end

以上です。

参考

http://www.gesource.jp/weblog/?p=198
Xpathチートシート
nokogiriを扱う準備としてXPathを学ぶ
スクレイピングのためのNokogiri利用メモ

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた