Hatena::Grouprubyist

今日も元気にrubyist

2007-05-19mechanizeの勉強をしよう(準備編)

と思って

require 'mechanize'

したら

tmp:1:in `require': no such file to load -- mechanize (LoadError)

と怒られてしまった。仕方がないので

gem install hogehoge

すると

'gem' は、内部コマンドまたは外部コマンド

操作可能なプログラムまたはバッチ ファイルとして認識されていません。

またまた怒られる。どうやら自宅のPCにはrubygemsインストールされていなかったらしい…。なんてこった。折角なのでno titleから最新のrubyを導入。これにgemsも一緒に入ってmechanizeインストールが無事完了しましたとさ。

あらためてmechanizeの勉強をしよう 22:32 あらためてmechanizeの勉強をしよう - 今日も元気にrubyist を含むブックマーク はてなブックマーク - あらためてmechanizeの勉強をしよう - 今日も元気にrubyist あらためてmechanizeの勉強をしよう - 今日も元気にrubyist のブックマークコメント

例えばnewsingからblogという文字列を含む記事を検索する場合。

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

agent = WWW::Mechanize.new
agent.user_agent_alias = 'Windows IE 6'
page = agent.get('http://newsing.jp/')
# 最初の検索フォームを探す
form = page.forms.first
# <input type="text" maxlength="50" value="" class="search" name="q" style="width:266px;">
# より、qという名前のinputフォームに'blog'と入力
form.q = 'blog'
# 結果を取得して表示
results = agent.submit(form)
puts results.body.tosjis

例えばNEWSING★BOOSTERからpicker=teraで検索する場合。

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

agent = WWW::Mechanize.new
agent.user_agent_alias = 'Windows IE 6'
page = agent.get('http://snow.lomo.jp/newsing/')
# 最初の検索フォームを探す
form = page.forms.first
# <input name="picker" value="">
# より、pickerという名前のinputフォームに'tera'と入力
form.picker = 'tera'
# 結果を取得して表示
results = agent.submit(form)
puts results.body.tosjis

ちなみに検索フォームに名前が付いている場合、

search_form = page.forms.with.name('search').first

というふうに、ダイレクトで指定してもよい。

まぁページ内に1つしかフォームがなければ無意味だけど。

…でこの先、mixiに自動ログインして情報取得( ̄ー ̄)ニヤリッとかやってもいいんだけど、ここまできてmechanizeが今俺に必要なものじゃないかも、と思って勉強中断(←自分勝手)。とりあえずmechanize周りで役立ちそうなページメモして終了。

Route 477(2007-02-05)

超手抜き版 はてなダイアリーライター(ruby版)を作ってみた。 - 生活。

no title

Route 477