ken3memo (三流君)

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)




[記事一覧、バックナンバーを見る]

2011-07-21

VBS で IEを使用して楽天市場にログインしてみた

VBS から IEを使用して、

楽天市場にログインするスクリプトを作成してみたいと思います

作成手順

おおざっぱな作成手順と解説です。

※動画解説と合せてみてください。

試行錯誤の解説動画

解説動画 → http://www.youtube.com/watch?v=rWRiG-DP_ms

D

↑こんな感じで、作成・テストしています

1.ログインページのソースを確認します。

まず、

ログインページのソース、

https://www.rakuten.co.jp/myrakuten/login.html

を見て

使用する項目を抜き出します。

※ここでは、下記のようにな ユーザID,パスワード,次へのボタンです。

ユーザID input type="text" name="u" value="" size=25 id="userid">

パスワード input type="password" name="p" value="" size=25 id="passwd">

ログインボタン input type="submit" value=" 次へ "

項目を抜き出します

※id=やname=を抜き出します。

2.データをセットします .getElementsByName使用

データをセットします。

データのセット方法はイロイロあるのですが、

name="u"とname="p"がわかっているので、

.getElementsByName を 使用して、該当オブジェクト(エレメント)を探してみました。

'ユーザー-ID(name=u)にセットする。
    Set objU = objIE.Document.getElementsByName("u") '変数に一度セットする

    If objU.Length = 0 Then  '.Lengthで 取得したエレメントの数がわかります
        '終了処理/エラー処理 0の時は見つからなかったので 
        Msgbox "ログインページが変わったか?メンテ中?です。表示されている内容を確認してください"
        WScript.Quit   'スクリプトを途中で抜ける
    End If

    objU(0).Value = strUID   'データをセットする
    Set objU = Nothing  'オブジェクト変数解放

'パスワード(name=p)にセットする。
    objIE.Document.getElementsByName("p").Item(0).Value = strPassword 'セットする

テスト時に、データがセットされたか?目で確認しました。

3.次へのボタンを探し、押します。

次へのボタンを探して、.Clickします。

.getElementsByTagName("INPUT")でINPUTのオブジェクトを集めて、

.Valueの値を 文字列操作関数 Instr を使用して、探します。

オブジェクトが(type="submitボタンが)見つかったら

.Click

で、ボタンを押す動作、メソッドを見つけたボタンに対して実行しました。

'次へ ボタンを探して押す
'input type="submit" value="             次へ             "> を 探す

    'INPUTのタグを集める .getElementsByTagName("INPUT")を使用
    Set objINPUT = objIE.Document.getElementsByTagName("INPUT")

    'ループで頭からテキストが 次へ を探す
    For n = 0 To objINPUT.Length - 1
        '※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意
        If Instr(objINPUT(n).Value,"次へ") > 0 Then  '文字列の中から見つけたら
            objINPUT(n).Click  '見つけたINPUTタグのオブジェクトをクリック
            Exit For
        End If
    Next

    Set objINPUT = Nothing  'オブジェクト変数解放

完成したソース 全体

作成したソース全体です。

xxxxxx.vbs で 保存して、テストしてみてください。

'頭で固定値をセットする 自分の番号をセットする。
strUID  = "test@test.test"  'ユーザー-ID、メールアドレスの人もいる
strPassword = "1234"       'パスワードあまりスクリプトには保存したくないけど

'パスワード保存したくない人向け、頭で入力させる
If strPassword = "" Then
    strPassword = InputBox("パスワードを入れてください")
End If


'IEの起動

    Dim objIE  '変数を定義します。
    Set objIE = WScript.CreateObject("InternetExplorer.Application") 'オブジェクト作成
    objIE.Visible = True      '可視、Trueで見えるようにします。
    
'処理したいページを表示します。
    'ここでは、楽天のログインページを直接呼びます
    objIE.Navigate "https://www.rakuten.co.jp/myrakuten/login.html"

'ページの表示完了を待ちます。
    While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        WScript.Sleep  100  '0.1秒待つ 1000で1秒
    Wend

'ユーザー-ID(name=u)にセットする。
    Set objU = objIE.Document.getElementsByName("u") '変数に一度セットする

    If objU.Length = 0 Then  '.Lengthで 取得したエレメントの数がわかります
        '終了処理/エラー処理 0の時は見つからなかったので 
        Msgbox "ログインページが変わったか?メンテ中?です。表示されている内容を確認してください"
        WScript.Quit   'スクリプトを途中で抜ける
    End If

    objU(0).Value = strUID   'データをセットする
    Set objU = Nothing  'オブジェクト変数解放

'パスワード(name=p)にセットする。
    objIE.Document.getElementsByName("p").Item(0).Value = strPassword 'セットする

'次へ ボタンを探して押す
'input type="submit" value="             次へ             "> を 探す

    'INPUTのタグを集める .getElementsByTagName("INPUT")を使用
    Set objINPUT = objIE.Document.getElementsByTagName("INPUT")

    'ループで頭からテキストが 次へ を探す
    For n = 0 To objINPUT.Length - 1
        '※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意
        If Instr(objINPUT(n).Value,"次へ") > 0 Then  '文字列の中から見つけたら
            objINPUT(n).Click  '見つけたINPUTタグのオブジェクトをクリック
            Exit For
        End If
    Next

    Set objINPUT = Nothing  'オブジェクト変数解放

'ここからログイン後に自動化したい処理がイロイロとあるんだけど....

終わりのあいさつ

ログインから先の処理を行って、最後はログアウト・・・なんだけど、

まぁ、はじめの一歩ってことで。

IEを使用した、自動ログイン処理作成の参考となれば幸いです。


2011-07-22 追記

楽天ツールバーを使用している場合は、

楽天ツールバー使用時の自動ログイン処理をVBSでテスト/デバッグ

http://d.hatena.ne.jp/ken3memo/20110722/1311345764

↑を見てください。

※今思えば、どちらからのログインでもポイント加算はOKかもしれないけど。。。

ykbykb 2016/08/27 19:40 お世話になります。楽天へ自動ログイン後、ログインのまま、マイページを自動的にダウンロードする方法はありますでしょうか。

ken3memoken3memo 2016/08/28 22:21 ダウンロード が 何を指すのか、少し見えないのですが、
単に表示されているデータを取得するなら、ログイン後に タグをあさって、.InnerTEXTとか.InnerHTMLなどで探っていったりするのかなぁ?
売上結果やCSVなどだと、ボタンを押して、ファイル保存のダイアログとか面倒かもしれませんが、表示データだけなら、ゴリゴリ回せば何とかなるのかなぁと自信がないので、
.innerTEXTとかなどで、検索して他のサンプルを見つけてみてください。
読み直すと回答になっていませんが こんな感じです。※って、ぉぃぉぃ どんな感じだよ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証





[記事一覧、バックナンバーを見る]








ブログトップ 記事一覧 ログイン 無料ブログ開設