Ruby 2.0.0-p481 を Windows にインストールしてコマンドプロンプトから処理しています。 昔同様の処理を行っていましたが、NIFTY のログインの仕様が変わっていました。また、agent.follow_meta_refresh を使って Mechanize がページを取得するようになっています。結局は、とても短い簡潔なコードで更新できました
# ココログのギャラリー名の変更 require 'mechanize' agent = Mechanize.new agent.verify_mode = OpenSSL::SSL::VERIFY_NONE agent.follow_meta_refresh = true agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko' page = agent.get("https://sso.nifty.com/pub/login.cgi?service=cocologin&back=https%3a%2f%2fwww.cocolog-nifty.com%2fdispatch%2f&am=1.2.0") # FORM に name 属性が設定されていたので、それで選択 form = page.form_with(:name => 'login') form["username"] = "ユーザ" form["password"] = "パスワード" page = form.submit # ギャラリー名の変更ページ # set_id に番号をセット page = agent.get("http://app.cocolog-nifty.com/t/app/gallery/configure?set_id=508074") # FORM がひとつしか無かったので .first form = page.forms.first form["name"] = "ギャラリーA" page = form.submit print "update OK!"
以下は、昔さくらインターネットで動作していたコードです。
1) ENV の中は 環境変数( HTTP_* 等 )
2) sub は 1回 gsub は 全て
3) 式の改行は前の行に継続として演算子を残す
#!/usr/local/bin/ruby print "Content-type: text/html\n\n" require "cgi" cgi = CGI.new ENV['GEM_HOME']="/home/lightbox/gems" $LOAD_PATH.push('/home/lightbox/lib') require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new #@nifty にログイン page = agent.get("https://login.nifty.com/service/login") form = page.forms.first form["username"] = "ユーザID" form["password"] = "パスワード" page = form.submit fp = open("./log_01.txt", "w") fp.puts(page.body) # 環境変数等を読みやすい形で出力 str = ENV.inspect str = str.gsub(/,/,"\n") fp.puts(str) fp.close # ************************************ # return : # <html><meta http-equiv="Refresh" content="0;URL=http://www.nifty.com/"></html> # ************************************ print "login<br>" # 対象ギャラリーの設定ページ page = agent.get('http://app.cocolog-nifty.com/t/app/gallery/configure?set_id='+ cgi['no'][0]) fp = open("./log_02.txt", "w") fp.puts(page.body) fp.close # ************************************ # return : # <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> # <head> # <meta http-equiv="Content-Type" content="text/html;charset=utf-8"></meta> # <META # HTTP-EQUIV="Refresh" # CONTENT="0;URL=http://app.cocolog-nifty.com/t/app/gallery/configure?set_id=ギャラリー番号&nwsThough=1" # ></META> # </head> # <body> # <!--result=ターゲット URL(CONTENTと同じ)--> # </body> # </html> # ************************************ print "request target page<br>" # 設定ページ page = agent.get('http://app.cocolog-nifty.com/t/app/gallery/configure?set_id='+ cgi['no'][0]+ '&nwsThough=1') fp = open("./log_03.txt", "w") fp.puts(page.body) fp.close print "response real page<br>" # 更新処理 form = page.forms.first form["name"] = "_"+cgi['gn'][0] form.submit
関連する記事
|
【Rubyの最新記事】
- Ruby(mechanize) で PHP からの JSON 経由でデータベース(MySQL)の値を取得
- Ruby : Seesaa の設定ページの「最新の情報に更新」ボタンを Ruby の mechanize で押す
- Ruby : 日本語の正規表現はバイナリで
- Mechanize : クラスのメソッドをオーバライドしてヘッダーを送れるようにしてiPhoneとしてサーバに認識させる
- Ruby : 自作WEBアプリケーションの呼び出しに使って機能を拡張する
- Ruby : 根本的なエラー処理 / 標準エラー出力の出力先を標準出力に変更する
- Ruby : ココログのアクセス解析ページの当日データの取得
- Ruby : メソッド定義で URLエンコード
- Ruby : Seesaa の複数のブログの現在の訪問者数とページビューの一覧
- Ruby : ココログギャラリーの設定から、Ruby の基本処理
- Ruby : Seesaa のブログ設定画面で、Form選択からコンボボックス、ラジオボタン、チェックボックスの設定