|
あべのりです.
すでにIKKIさんのマクロを改良されているところと思いますので,以下は参考程度に.
Internet Explorerは当然HTMLを解析していますので,その情報を取り出すことが可
能です.
IEで開いた後,ページのdocumentオブジェクトを取得し,それを通じてHTMLの中身を
取り出すことができます.
実際に何ができるかは
https://developer.mozilla.org/Ja/DOM/document
をご覧ください.(Geckoなので,IEとは少し違うかもしれませんが.)
簡単な例です.
// makeを検索するURL
$url = "http://lsd.pharm.kyoto-u.ac.jp/cgi-bin/lsdproj/ejlookup04.pl?inherit
=yes&query=make";
// IE起動
#ie = createobject("InternetExplorer.Application");
if(#ie == 0){message "IEの起動に失敗";call Exit;}
// ページを開く
callmethod #ie,"Navigate",$url;
if(!getresultex(10)){message $url + "\nの取得に失敗";call Exit;}
// 開き終わるまで待機
while(true){
if(#i == 10){
message "タイムアウトしました.";
call Exit;
}
#busy = getpropnum(#ie,"busy");
#state = getpropnum(#ie,"ReadState");
if(#busy == 0 || #state == 4)break;
sleep 1000;
#i = #i + 1;
}
// Documentオブジェクトを取得.
#doc = getpropobj(#ie,"Document");
if(#doc == 0){message "documentプロパティの取得に失敗";call Exit;}
// ページ内のspanを列挙する.
#elts = callmethod_returnobj(#doc,"getElementsByTagName","span");
#i = 0;
// spanの数
#elt_num = getpropnum(#elts,"length");
$out = "";
while(#i < #elt_num){
#elt = getcollection(#elts);
// class="headword"なもののみ取り出す
if(getpropstr(#elt,"className") == "headword"){
$out = $out + "\n" + getpropstr(#elt,"innerText");
}
#i = #i + 1;
}
insert $out;
call Exit;
Exit:
callmethod #ie,"Quit";
endmacro;
|
|