Mechanize

install

gem install mechanize

リファレンスマニュアル
http://mechanize.rubyforge.org/mechanize/


とりあえず yahoo の最新トピックスをゲットしてみる

require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
#agent.set_proxy("proxy.xxx", 80)
page  = agent.get('http://www.yahoo.co.jp')
puts  page.links.select{|link| link.href =~ /.*\?http:\/\/dailynews.*\/fc\/.+/}

実行結果

東電、制御室被害を過小報告
虐待 小1長男の全身にろうそく
TBSの不二家報道「重大な問題」
タイ警察官 罰はキティ風腕章
朝青龍 別の精神科医が診察へ
武蔵の不可解判定に怒り爆発
内に関ジャニ8復帰ラブコール

Mechanize その2

はてなにログインしてみる
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-cygwin]

require 'rubygems'
require 'mechanize'
require 'kconv'

user_id = "xxxxxxxxxx"
pass    = "xxxxxxxxxx"

agent = WWW::Mechanize.new
login_page  = agent.get('https://www.hatena.ne.jp/login')
login_form  = login_page.forms.first
login_form["name"]     = user_id
login_form["password"] = pass
res = agent.submit(login_form)
if res.body =~ /error-message"\>.*\(.*?)\<\/p\>.*\<\/div\>/m
  puts $1.tosjis
end
if res.body =~/progress-message"\>.*\\(.*)\<\/span\>/m
  puts $1.tosjis
end

実行結果

成功時
   xxxxxxxxxx でログイン中です
失敗時
   ユーザー名またはパスワードが違います