2011-01-06 6 views
0

特定のWebページからすべてのリンクを抽出する必要があるコードを作成しています。現在のページも表示する必要があるため、埋め込みWBというコンポーネントを使用します。私はEmbeddedWBにロードされ、JavaScriptの "document.write"関数を使用していくつかのURLを生成するいくつかのスクリプトを含んでいる単純なページを持っています。ソースコードで見つかったURLのは、予想通り、私は取得コンポーネントのが、私の意図は、そのリンクをキャッチすることです:関数にViewPageLinksToStrings(TStringsはLinksList)を使用することによりDelphiでJavaScript生成リンクを抽出する

<html> 
<body> 
<a href=#>No problem Here<a/> 
<script Language="JavaScript"> 
var random=Math.floor(Math.random()*11); 
document.write("<a href=\"index"+random+".html\"> I Can’t catch this link! </a>"); 
</script> 
</body> 
</html> 

:理論的には私はこのような何かを持っていますJavaScriptでも生成されます。

これを行うにはどうすればよいでしょうか?私が使用できるライブラリがありますか?

ありがとうございます。 John Marko

+1

異なるWebブラウザ缶「を表示するページのソース」:私はここに簡略化されているタイプIHTMLDocument2、の変数にフル(Javascriptを-生成)DOMツリーを読み取るコードが含まれています。私は特定のブラウザを忘れていますが、少なくとも1つは「最終的な」ソース、つまりjs自体ではなくjavascriptのソースを表示しています。そのようなブラウザを埋め込むことは助けになるかもしれません...あるいは、DOMを歩いてリンクを見つけるのはどうですか? DOMは、JSによって生成されたリンクを含むすべてのリンクを持つ必要があります。 –

答えて

1

EmbeddedWBがJavascriptをサポートしていて、フォーラムでthis articleが見つかりました。この点で異なっ

procedure MyProcedure(Sender: TObject); 
var 
    Doc: IHTMLDocument2; 
begin 
    EmbeddedWB1.Navigate('... some url ...'); 
    while EmbeddedWB1.ReadyState < READYSTATE_INTERACTIVE do 
    Application.ProcessMessages; 

    Doc := EmbeddedWB1.Document as IHTMLDocument2; 
    ... 
関連する問題