指定したタグの数を取得する

指定したタグの数を取得する


obj = IE.document.getElementsByTagName(タグ名)
obj.length

指定したタグの数を取得する

例えば以下の様な構造のWebページがあったとします。h1、h4、div、pで構成されています。

<h1>Hello H1</h1>
<div id="mainCentric">
<h4>Yes! This is a pen.</h4>
<h4>No! No! No! This is not a pencil.</h4>
<p>Get some objects!</p>
<p>Then you go home!</p>
</div>

getElementsByTagNameでタグ名を指定することで該当のオブジェクトを取得できますので、それに対してlengthを実行することでタグ数が分かります。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0013/")
REPEAT
  SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

pTag = IE.document.getElementsByTagName("h4")
PRINT pTag.length

pタグの数を取得する

上記のサンプルではh4タグは2箇所出てきますので、結果は「2」となります。

次にpタグの要素数を調べてみましょう。
pタグは最初にお見せしたHTML以外の箇所でも使われているので、多くの数が出るでしょう。
スクリプトは下記のようになります。

この投稿の続きを読む »

タグ

2013年1月19日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IEの遷移、履歴操作、ウィンドウを閉じる

IEの遷移履歴やウィンドウを閉じる操作も行えます。
例えばIE.quitと命令するとウィンドウがクローズします

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0005/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4
MSGBOX("ウィンドウを閉じます")
IE.quit

履歴操作、ホームページ、検索ページ

以下のメソッドを実行することで、履歴を辿れたり
ホームページや、検索ページへの遷移が行えます。
IE.goBack・・・一つ前に戻る
IE.goForward・・・一つ次に進む
IE.goHome・・・ホームページに遷移
IE.goSearch・・・検索ページに遷移
IE.refresh・・・ページのリフレッシュ

実行時のスクリプトは下記の通りです。

この投稿の続きを読む »

タグ

2012年10月11日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.document.forms.elementsに情報を入力して送信

IE.document.forms.elementsではエレメントの情報取得に加え、
値をセットすることもできます。
フォームのオブジェクトに値を自動入力し、
サブミット(送信)するには以下のようにします。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0012/")
 
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4

//「名前」=大小山田を入力
IE.document.forms[0].elements[0].value = "大小山田"
//「都道府県」=北海道を選択
IE.document.forms[0].elements[1].selectedIndex =  3
//「性別」=女性にチェック
IE.document.forms[0].elements[3].checked = True
//「好きな色」=赤、青、黄にチェック
IE.document.forms[0].elements[5].checked = True
IE.document.forms[0].elements[6].checked = True
IE.document.forms[0].elements[7].checked = True
//「パスワード」=1234567890を入力
IE.document.forms[0].elements[8].value = "1234567890"
//「備考」=改行を含む文字列を入力
IE.document.forms[0].elements[9].value = "Hola!<#CR>こんにちは"

MSGBOX("一度リセットします")
IE.document.forms[0].reset()

MSGBOX("再度入力します")

//「名前」=大小山田を入力
IE.document.forms[0].elements[0].value = "大小山田"
//「都道府県」=北海道を選択
IE.document.forms[0].elements[1].selectedIndex =  3
//「性別」=女性にチェック
IE.document.forms[0].elements[3].checked = True
//「好きな色」=赤、青、黄にチェック
IE.document.forms[0].elements[5].checked = True
IE.document.forms[0].elements[6].checked = True
IE.document.forms[0].elements[7].checked = True
//「パスワード」=1234567890を入力
IE.document.forms[0].elements[8].value = "1234567890"
//「備考」=改行を含む文字列を入力
IE.document.forms[0].elements[9].value = "Hola!<#CR>こんにちは"

MSGBOX("サブミットします※プログラムは用意していないため「ページが無い」エラーがでます")
IE.document.forms[0].ok.click()

nameを指定するパターンも可能

nameプロパティから取得した値でも指定可能です。
IE.document.forms[0].onamaeとやればname=onamaeとなっているオブジェクトを
指定可能です。
例えばラジオボタンのオブジェクトの場合、同名のものが複数あるケースが多いので
名前指定時にも配列番号で、細かく特定することができます。
以下のスクリプトで見てみましょう。

この投稿の続きを読む »

タグ

2012年10月8日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

特定の画像を見つける

画像オブジェクトの情報を読み込みながら、特定の画像を見つけてみます。

順次ページにアクセスしていき、指定画像が出現したらメッセージを表示するスクリプトを動画で実演しています。

タグ


2012年9月8日 | コメントは受け付けていません。 |

カテゴリー:動画

IE.document.formsからフォームの情報取得

IE.document.formsから取得できるフォームの情報

IE.document.formsからフォームの情報取得を動画で実演しています。

タグ


2012年9月8日 | コメントは受け付けていません。 |

カテゴリー:動画

COMを使ったresetとsubumitの自動送信

resetとsubumitの自動化

IE.document.forms[0].resetでフォームの各項目の入力値がリセット、
IE.document.forms[0].submitでサブミット、送信を動画で実演しています。

タグ


2012年9月8日 | コメントは受け付けていません。 |

カテゴリー:動画

COMでIEとExcelを連携させよう

IEとExcelの連携

IEとExcelを使いデータ連携の自動化を実現しています

タグ


2012年9月8日 | コメントは受け付けていません。 |

カテゴリー:動画

COMオブジェクト操作関連

COMオブジェクト操作関連関数

COMについては上級者編で解説されております。
関数を使用した具体的なCOMオブジェクトの活用例は上級者編をご参照下さい。

CREATEOLEOBJ

COMオブジェクト生成
戻値 = CREATEOLEOBJ( COMオブジェクト名 )
引数
 COMオブジェクトを指定
戻値
 COMオブジェクト
なお、COMからメソッド使用時に引数に値取得がある場合
引数の変数の前にVarを付記


GETACTIVEOLEOBJ

既に起動中のCOMオブジェクトを取得
戻値 = GETACTIVEOLEOBJ(COMオブジェクト名,[タイトル, 順番])
引数
 COMオブジェクトを指定
 タイトル: 複数時にタイトルで区別(部分一致可)
 なお、Excel、Access、Wordの場合はファイル名を指定
 IE、Office以外では無効
 順番: IEのみ有効、タイトルが同じ時に区別
戻値
 COMオブジェクト


GETOLEITEM

コレクションの取得
戻値 = GETOLEITEM( コレクションプロパティ名)
引数
 コレクションプロパティ名:COMオブジェクトのコレクション取得プロパティ名を指定
戻値
 取得したコレクションの数
 取得したコレクションは配列変数の
 ALL_OLE_ITEM[ ]に配列ゼロから格納


OLEEVENT

イベント処理の定義
OLEEVENT( COMオブジェクト, インタフェース名, イベント名, Procedure名)
引数
 COMオブジェクトを指定
 インタフェース名: ディスパッチインタフェース名
 イベント名
 Procedure名:UWSC側Procedure
 Procedure内にてイベントの引数は配列変数EVENT_PRM[ ]に配列ゼロから格納


COM_ERR_IGN-COM_ERR_RET

COMエラーメッセージの抑止
COM_ERR_IGN
 ・・・COM処理・・・
COM_ERR_RET
COM処理中のエラーはCOM_ERR_FLG にTRUEが設定


SAFEARRAY

SAFEARRAY型の作成
戻値 = SAFEARRAY( [下限, 上限])
引数
 下限: 配列の下限を設定
 上限: 配列の上限を設定
戻値
 作成されたSAFEARRAY型を返す


タグ

2012年8月16日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

IEGETSRCの使い方について

IEGETSRCの解説ページを拝見させていただきましたが、
分からないことがあります。
<div id="sidebar1">
こういったタグ内にある内容を取得するにはどうしたら良いでしょうか?
ダブルクォーテーションを<#DBL>にしても、値がとれません。
先ずは、IEGETSRCの関数を確認してみましょう。
Web上(IE)にて指定タグのソースを取得
戻値 = IEGETSRC( IE, タグ名, [番号] )

とのことで、引数にidやclassに関する記載がないので、
直接取得は難しそうです。(※1)

そこで一工夫して、値を取得しましょう。
IEGETSRCで取得された値は、
下記のようにタグで囲まれまれた形で取得されます。

例:こんな感じで取得されます
<div id="test1">DIV 1</div> <div id="test3"><a href="http://canal22.org">UWSC</a></div>

ということで、取得するidが分かっていれば、
BETWEENSTRを使ったスクレイピングで値を特定できます。

sampleページを対象に参考スクリプトを作成しました。
div id=”test3″を取得するスクリプト
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://canal22.org/sample0007/")
BusyWait(IE)

CNT = 1
REPEAT
	body = IEGetSrc(IE, "div",cnt)
	body = BETWEENSTR(body,"<div id=<#DBL>test3<#DBL>>","</div>")

	IFB body <> EMPTY
		PRINT "DIV:" + body
	ENDIF

	CNT = CNT + 1
UNTIL body = EMPTY

//------
Procedure BusyWait(ie)
	repeat
		Sleep(0.2)
	until (! ie.busy) and (ie.readyState=4)
Fend

解説

このスクリプトでは、
最初にsample007ページへアクセスします。

そして、REPEATIEGetSrcを使い、 全てのdivタグを取得するなかで、
BETWEENSTRで取得したいidを含むタグを指定して、
戻り値がある場合⇒指定した値という認識で
PRINTしています。

まとめると、
①全てのdivタグの取得
②該当idを選別
ということです。

こういったやり方で取得する方法があります。
ただし、このサンプルではうまくいっていますが、
絶対的に対応できるスクリプトではないので、
ご自身のやりたいこと、環境に合わせてスクリプトを組んでみてください。

また、蛇足ですが、
IEGetdataでは、

div = IEGetdata(IE , "TAG=div" , "id=test3" )

といった形でidを指定できます。
ただし、ソースではなく値が取得されます。

※1 HELPを参照したレベルでの見解です

このページの先頭へ