RubyでWebスクレイピングするためのサンプル

サンプルで使ったライブラリ

gem install nokogiri
gem install mechanize

HTMLを操作するサンプル

  • 型番で検索して、価格コムの最安値を出力するサンプル
# coding: utf-8
require 'rubygems'
require 'nokogiri'
require 'open-uri'

model_number = 'L32-V09'
page = open("http://kakaku.com/search_results/#{model_number}/")
html = Nokogiri::HTML(page.read, nil, 'Shift_JIS')
html_item = html.search('//div[@class="item clearfix"]').first
min_price = html_item.search('//div[@class="price clearfix"]//span[@class="yen"]//a').first.content

puts "#{model_number}: 最安値 #{min_price}"
  • 実行結果
L32-V09: 最安値 \39,339 〜

Webサイトへの自動アクセスサンプル

  • Googleで「Ruby」を検索して、結果のタイトルを出力する
require 'rubygems'
require 'mechanize'

a = Mechanize.new { |agent|
  agent.user_agent_alias = 'Mac Safari'
}

a.get('http://google.com/') do |page|
  search_result = page.form_with(:name => 'gbqf') do |search|
    search.q = 'Ruby'
  end.submit

  search_result.search(".//a[@class='l']").each_with_index.map do |link, i|
    puts "#{i} #{link.content}"
  end
end
  • 実行結果
0 オブジェクト指向スクリプト言語 Ruby
1 Ruby Programming Language
2 Ruby - Wikipedia
3 Ruby入門
4 Amazon.co.jp: プログラミングRuby―達人プログラマーガイド: デビット ...
5 Rubyとは - はてなキーワード
6 日本Rubyの会 公式Wiki - FrontPage
7 Rubyを最大63%高速化した中学生は超多忙! − @IT自分戦略研究所
8 日本で生まれ世界が育てた言語 Ruby:ITpro
9 逆引きRuby - namaraii.com
10 ついに軽量Rubyの「mruby」のソースコードが公開!