在Delphi中提取JavaScript生成的链接

时间:2011-01-06 11:55:00

标签: javascript delphi

我正在编写一段代码,我需要从特定网页中提取所有链接。我使用组件 EmbeddedWB ,因为我还需要显示当前页面。我有一个简单的页面加载到EmbeddedWB并包含一些脚本,使用JavaScript的“document.write”函数生成一些URL。从理论上讲,我有类似的东西:

<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>

通过使用组件的 ViewPageLinksToStrings(LinksList:TStrings)函数,我得到了源代码中找到的URL,但我的目的是捕获用JavaScript生成的链接。

最好的方法是什么?我可以使用任何图书馆吗?

感谢您的时间。约翰马可

1 个答案:

答案 0 :(得分:1)

看起来EmbeddedWB支持Javascript,我在论坛中找到了this article。我包含的代码将完整的(Javascript生成的)DOM树读入IHTMLDocument2类型的变量中,这里简化了:

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;
  ...