我正在编写一段代码,我需要从特定网页中提取所有链接。我使用组件 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生成的链接。
最好的方法是什么?我可以使用任何图书馆吗?
感谢您的时间。约翰马可
答案 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;
...