環境は、
・Windows8上で作る
・rubyは2.0.0(32bit)を使う
で進める。で進める前にいろいろ調べたら、rubyの開発環境ではgemでインストールすると、
依存関係のライブラリを最新でインストールする動きらしく、うまく動かないことがあるらしい。
開発するプロジェクトごとのライブラリを簡易にする方法としてbundlerというものがあった。
それはこちらで環境をつくってみた。
それはこちらで環境をつくってみた。
1.環境準備
まずはプロジェクト用おnフォルダを作成する。
>mkdir d:\program\hc_mechanize
>cd d:\program\hc_mechanize
次にbundle環境を作成する。
>bundle init
Gemfileを変更し、mechanizeを設定する。
>vim Gemfile
==
gem "mechanize"
==
問題なくインストール完了。
2.サンプルコードで試してみる
mechanizeのサイトのRubyforgeのサンプルをそのまま動かしてみる。
>vim hc.rb
==
require 'rubygems'
require 'mechanize'
a = Mechanize.new
a.get('http://rubyforge.org/') do |page|
# Click the login link
login_page = a.click(page.link_with(:text => /Log In/))
# Submit the login form
my_page = login_page.form_with(:action => '/account/login.php') do |f|
f.form_loginname = ARGV[0]
f.form_pw = ARGV[1]
end.click_button
my_page.links.each do |link|
text = link.text.strip
next unless text.length > 0
puts text
end
end
==
v3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
・
>vim hc.rb
==
・
・
a = Mechanize.new
a.agent.http.ca_file = 'D:/program/hc_mechanize/cacert.pem' #modified
a.get('http://rubyforge.org/') do |page|
・
・
==
となって成功!
3.実際のスクリプトを作成してみる
と、ここで実際のルータのページを見てみたところ、、リンクにjavascriptが使われていた。
まぁサンプルが見当たらなかったですが、適当にカスタマイズしながら、調べながら進めてみ
たが、どうにもこのリンクをクリックできない。で、今一度mechanizeを調べてみたら、、なんと
javascriptはサポートしていないとのこと(ブラウザ依存するから?)。しょっぱなから躓いた。
気を取り直して調べてみたところ、ブラウザのJavascriptを実装できるツールとして、watir
というものがあるらしい。といことで次回に持越し・・
>cd d:\program\hc_mechanize
次にbundle環境を作成する。
>bundle init
Gemfileを変更し、mechanizeを設定する。
>vim Gemfile
==
gem "mechanize"
==
でインストール(d:\program\hc_mechanize\gem)する。
>bundle install --path gem
問題なくインストール完了。
2.サンプルコードで試してみる
mechanizeのサイトのRubyforgeのサンプルをそのまま動かしてみる。
>vim hc.rb
==
require 'rubygems'
require 'mechanize'
a = Mechanize.new
a.get('http://rubyforge.org/') do |page|
# Click the login link
login_page = a.click(page.link_with(:text => /Log In/))
# Submit the login form
my_page = login_page.form_with(:action => '/account/login.php') do |f|
f.form_loginname = ARGV[0]
f.form_pw = ARGV[1]
end.click_button
my_page.links.each do |link|
text = link.text.strip
next unless text.length > 0
puts text
end
end
==
で実行!
>bundle exec ruby hc.rb
D:/tools/pik/install/Ruby-200-p195/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
・
・
・
なんかエラーでた。SSL証明書のチェックでこけているらしい。
調べたら、どうもデフォルトのCAファイルの場所が問題らしいので、caをダウンロードして、パス
を明示的に指定してみる。
>vim hc.rb
==
・
・
a = Mechanize.new
a.agent.http.ca_file = 'D:/program/hc_mechanize/cacert.pem' #modified
a.get('http://rubyforge.org/') do |page|
・
・
==
>bundle exec ruby hc.rb
Log In
Support
New Account
RubyForge
Home
My Page
Project Tree
Code Snippets
Project Openings
[Lost your password?]
[New Account]
[Resend confirmation email to a pending account]
となって成功!
3.実際のスクリプトを作成してみる
と、ここで実際のルータのページを見てみたところ、、リンクにjavascriptが使われていた。
まぁサンプルが見当たらなかったですが、適当にカスタマイズしながら、調べながら進めてみ
たが、どうにもこのリンクをクリックできない。で、今一度mechanizeを調べてみたら、、なんと
javascriptはサポートしていないとのこと(ブラウザ依存するから?)。しょっぱなから躓いた。
気を取り直して調べてみたところ、ブラウザのJavascriptを実装できるツールとして、watir
というものがあるらしい。といことで次回に持越し・・