Railsでスクレイピングの際に画像サイズを調べてごにょごにょする。
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利用メモ