[前提1]ハンドラーのオブジェクト構造をまず理解
ハンドラーとか格好良くいっているけども、要はIEを操作するためのクラスオブジェクトのことを言っている。
┏ html(Document) ━━━━━━━━━
┃ ┏ Form ━━━━━━━━━━━━━
┃ ┃ ┏ INPUT ━━━━━━━━━━━
┃ ┃ ┃
┃ ┃ ┗━━━━━━━━━━━━━
┃ ┗ ━━━━━━━━━━━━━
┗━━━━━━━━━━━━━━
VBAやっている人なら理解できると思いますが、
┏ book(Workbook) ━━━━━━━━━━━━━━
┃ ┏ Sheet(WorkSheet) ━━━━━━━━━━━━━
┃ ┃ ┏ Cells/Range ━━━━━━━━━━━
┃ ┃ ┃
┃ ┃ ┗━━━━━━━━━━━━━━━
┃ ┗ ━━━━━━━━━━━━━━━━
┗━━━━━━━━━━━━━━━━━━
のような感じです。
詳しくはMicrosoftの詳細ページでご覧あれ
[前提2]
スクレイピングを行う場合、取得したい文字列や、飛びたいリンクが書かれているHTMLタグを探すわけだけど、じゃあ何を使って特定するか…??
3つある。
①Class属性
②Name属性
③Id属性
①Class属性
<FORM ACTION="sample" METHOD="POST" CLASS="testClass">
<INPUT TYPE="HIDDEN" NAME="NO" VALUE="0">
</FORM>
②Name属性
<FORM ACTION="sample" METHOD="POST" NAME="testName">
<INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
</FORM>
③Id属性
<FORM ACTION="sample" METHOD="POST" ID="testId">
<INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
</FORM>
①+②+③の全部乗せ
<FORM ACTION="sample" METHOD="POST" CLASS="testClass" NAME="testName" ID="testId">
<INPUT TYPE="TEXT" NAME="AIUEO" SIZE=60 VALUE="">
</FORM>
基本Formタグとかには①、②、③のいずれかはある場合が多いが、ない時もある。
前提はこの辺にして、
じゃあ実際にどうやって値を取得・設定していくか。
1.テキストボックスに値を設定する
①の場合
objIE.document.getElementsByClassName("testClass")(0).Value = "入力したい文字列";
で取ってくる。この属性の場合複数取得される可能性があるので、
HTMLソース上、取得したいタグが何個目のtestClassであるのか把握しておく必要がある。
②の場合
この場合は楽勝
objIE.Document.Forms("testName").Item("AIUEO").Value = "入力したい文字列";
でいける。
けど、同じnameが複数あったらどういう挙動なのか不明。
③の場合
■クラス
↓"default_btn"クラスの1個目とかで指定
objIE.document.getElementsByClassName("default_btn btn_big_size")(0).Click
■JAVASCRIPTの実行
objIE.navigate "JavaScript:login(this)"