![]() | tech note |
| 自分をリファクタリング中。 |
Webサイトへのアクセスを自動化するのに、「ブラウザを操作するのと同じような感覚で」スクリプトを書くことができるという、WWW::Mechanizeを使ってみる。
RubyForge : RubyForge: WWW::Mechanize: Project Info
日本語リファレンス : Greenbear Laboratory - WWW::Mechanizeの日本語リファレンス
ページを開いて、ユーザーIDとパスワードを入力して、ログインボタンを押して、・・・なんてことを自動化するスクリプトを「ブラウザを操作するのと同じような感覚で」書けてしまうスグレモノみたいです。
# gem install mechanize
Bulk updating Gem source index for: http://gems.rubyforge.org
Install required dependency hoe? [Yn] Y
Install required dependency rubyforge? [Yn] Y
Successfully installed mechanize-0.6.10
Successfully installed hoe-1.3.0
Successfully installed rubyforge-0.4.4
Installing ri documentation for mechanize-0.6.10...
Installing ri documentation for hoe-1.3.0...
Installing ri documentation for rubyforge-0.4.4...
Installing RDoc documentation for mechanize-0.6.10...
Installing RDoc documentation for hoe-1.3.0...
Installing RDoc documentation for rubyforge-0.4.4...require 'mechanize'
url_file = ARGV[0]
my_user = ARGV[1]
my_pass = ARGV[2]
#テキストファイルからフィードURLを取得
urls = File.read(url_file).to_a
agent = WWW::Mechanize.new
#はてなのログイン画面を開き
hatena_login_page = agent.get('https://www.hatena.ne.jp/login')
#ログインフォームにユーザー名とパスワードを入れて
login_form = hatena_login_page.forms.first
login_form['name'] = my_user
login_form['password'] = my_pass
#「送信する」を押す
agent.submit(login_form)
sleep(3)
#フィードURL数分繰り返す
urls.each {|url|
#RSSリーダーのページを開き
hatena_rss_page = agent.get('http://r.hatena.ne.jp/' + my_user)
#フィードURLを入れて「追加」ボタンを押す
add_form = hatena_rss_page.form('addform')
add_form['url'] = url.chomp
sleep(3)
confirm_page = agent.submit(add_form)
#確認画面で「追加する」を押す
sleep(3)
confirm_form = confirm_page.forms.first
agent.submit(confirm_form, confirm_form.buttons.name('save'))
sleep(5)
}http://www.pheedo.jp/f/gigazine_2
http://www.pheedo.jp/f/slashdot_japan
http://feeds.japan.cnet.com/cnet/rss