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

Shunsuke Sawada

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

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

Gemfile

1
2
gem 'nokogiri'
gem 'rmagick'

config/application.rb

1
require 'RMagick'

controllers/your_controller.rb

ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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利用メモ

20
Shunsuke Sawada

おすすめの記事

acts-as-taggable-on タグを表示させる順番を決めたい
Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき