競馬場 開催地 選択のソースを見ると
<FORM method=post action=http://info.ipat.jra.go.jp/p/s> <INPUT name=g value=Mnu01 type=hidden> <INPUT name=s value=0000000 type=hidden> <INPUT name=j value=6123500000 type=hidden> <INPUT name=w value=3e2c27747c352f23 type=hidden> <TD> <SELECT size=4 name=m> <OPTION selected value=61235>2012年 3回 中山 5日 (当日売) <OPTION value=91225>2012年 2回 阪神 5日 (当日売) <OPTION value=31211>2012年 1回 福島 1日 (当日売) <OPTION value=91226>2012年 2回 阪神 6日 (前日売) </OPTION></SELECT></TD> <TD> </TD> <TD class=top> <TABLE border=0 cellSpacing=0 cellPadding=0> <TBODY> <TR> <TD class=nwtop colSpan=2>情報を取得したい「年次・回次・競馬場・日次」を選択して ください。 <TD></TD> <TR> <TD><INPUT value=決定 type=submit></TD></FORM>
※↑改行位置変更
となっているので、
name=m の SELECTタグのOPTIONを選択 selected 状態にして決定を押し、開催地を変更します。
3.1 SELECTタグを集める
name=m が 複数あるので、まず、SELECT タグを集めてから、name=mを探してみます。
Set objSELECT = objIE.Document.getElementsByTagName("SELECT")
で、集めると、
objSELECT.Length で 個数がわかるので、
ループで回し、.Nameが ="m" の SELECTタグを見つけます。
For n = 0 To objSELECT.Length - 1
'※.Nameで判断する
If objSELECT(n).Name = "m" Then
Set objM = objSELECT(n) '見つけたname=mを新しくオブジェクト変数に代入
3.2 OPTIONを選択 開催地の選択
'次に下のオプションを探る
オプションの数は objM.OPTIONs.Length
と、
これも似たような感じで、.OPTIONs.Lengthで知ることができます。
'今回は使わなかったけど、中身をループで表示
For n = 0 To objM.OPTIONs.Length - 1 Wscript.ECHO n & "番目 .InnerTEXTは " & objM.OPTIONs(n).innerTEXT Next
で、確認するといいかも。
テストで 3番目(2)を選択してみました
objM.OPTIONs(2).selected = True '単純にselectedプロパティをTrueでセレクト状態にする
※0 1 2 3なので、(2)のセレクト状態 .selected を True にしただけです。
3.3 決定 を 押し、開催地を変更する
これも、同じように(もう、いいかげんなれましたか?)
INPUTのタグを集める .getElementsByTagName("INPUT")を使用
Set objINPUT = objIE.Document.getElementsByTagName("INPUT")
で、集めて、
objINPUT.Length の 数だけ回して、.Value 値を確認して、.Clickしてみました。
決定ボタンを.Valueで探してから、.Clickしてみました。
'ループで頭から表示してみる For n = 0 To objINPUT.Length - 1 '※.valueで値を見る If objINPUT(n).Value = "決定" Then objINPUT(n).Click '決定のボタンを押す exit For 'ループを抜ける end If Next
操作結果と解説動画
いつもの 操作動画と解説動画です。
テスト動画 : http://www.youtube.com/watch?v=gzkfBEEsRn0
www.youtube.com
テストのソースコード
競馬場・開催地の選択、テストのソースコードです。
'またまた、新しく起動した IPAT情報メインメニュー を 探す 'シェルのオブジェクトを作成する Set objShell = CreateObject("Shell.Application") Set objIE = Nothing 'ウインドウの数だけまわすぞ For Each objWindow In objShell.Windows 'TypeNameでオブジェクト変数のタイプを表示する 'HTMLDocumentだったら If TypeName(objWindow.document) = "HTMLDocument" Then If objWindow.document.URL = "https://info.ipat.jra.go.jp/p/s" Then Set objIE = objWindow '見つけたウインドウを(IE)を代入 Exit For End IF End If Next Set objShell = Nothing '見つけたかチェック If objIE Is Nothing Then msgbox "エラー IPAT情報メインメニュー 見つかりません" wscript.quit End If 'SELECT name=m の 開催地オプションを選択する 'SELECTのタグを集める .getElementsByTagName("SELECT")を使用 Set objSELECT = objIE.Document.getElementsByTagName("SELECT") Wscript.ECHO "SELECTのタグは " & objSELECT.Length & "個です。" 'ループで頭から表示してみる Set objM = Nothing For n = 0 To objSELECT.Length - 1 '※.Nameで判断する If objSELECT(n).Name = "m" Then Set objM = objSELECT(n) '見つけたname=mを新しくオブジェクト変数に代入 exit For 'ループを抜ける End If 'Wscript.ECHO n & "番目 .Name=" & objSELECT(n).Name '名前の確認 'Wscript.ECHO objSELECT(n).OuterHTML Next Set objSELECT = Nothing 'オブジェクト変数解放 '見つけたかチェック If objM Is Nothing Then msgbox "エラー 開催地 Name=m が 見つかりません" wscript.quit End If '次に下のオプションを探る Wscript.ECHO "オプションの数は" & objM.OPTIONs.Length '中身をループで表示 For n = 0 To objM.OPTIONs.Length - 1 Wscript.ECHO n & "番目 .InnerTEXTは " & objM.OPTIONs(n).innerTEXT Next 'テストで 3番目(2)を選択する ※0 1 2 3 objM.OPTIONs(2).selected = True '単純にselectedプロパティをTrueでセレクト状態にする '決定を押し、開催地を切り替える 'INPUTのタグを集める .getElementsByTagName("INPUT")を使用 Set objINPUT = objIE.Document.getElementsByTagName("INPUT") Wscript.ECHO "INPUTのタグは " & objINPUT.Length & "個です。" 'ループで頭から表示してみる For n = 0 To objINPUT.Length - 1 '※.valueで値を見る If objINPUT(n).Value = "決定" Then objINPUT(n).Click '決定のボタンを押す exit For 'ループを抜ける end If Next
JRA IPAT単勝オッズ取得 開発の流れ と 全体の流れ
は
JRA IPAT 単勝オッズの取り込み - 三流君ken3のひとりグループ
http://ken3hitori.g.hatena.ne.jp/bbs/30
↑の流れを見て、笑ってください・・・
JRA IPATを操作する他のサンプル・類似処理は、
・JRA IPAT ログイン処理
・JRA IPAT 入金処理 - 三流君ken3のひとりグループ
です。また、VBA IE操作の解説は
三流君VBAでIE操作 InternetExplorer.Applicationを操作する
で細々やっているので、よかったらお時間のある時にのぞきにきてください。