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を参照したレベルでの見解です

このページの先頭へ