我的问题很简单,目标网页使用了脚本技术,就是在网页显示完成后,再用脚本调用网页的其它内容并写入浏览器,比如一本图书的详情、评论什么的。
我使用delphi的IDHttp控件抓取时,不能抓取这方面的内容。
然后我使用webbrower网页控件,能显示出,即先有网页显示了整个网页的内容,然后出现“图书详情加载中”,这时估计在运行脚本了,最后图书详情显示出来了。
我是这么想的,既然显示出来了,那这部分内容肯定在内存的什么地方呀?我找不到,提不出来,我搜索了网站很多获取源码的方法,这部分内容都没法弄出来。怎么办呢?

解决方案 »

  1.   

    你加载的网页可能嵌入了框架吧?用浏览器先看看网页结构才知道。就好像 CSDN 的回复框一样也是是嵌入的框架。其实我在回复这个帖的时候,实际上用的是这个:
     
    http://forum.csdn.net/PointForum/Forum/ReplyT.aspx?forumID=8ab98cd6-4afb-4f14-947b-586dba0ad98a&topicID=11bde6ee-007b-49f0-bba7-aa0e38cce923&postDate=2010-12-07+12:15:33&v=13&sa=Delphi&ba=DelphiVCL
      

  2.   

    用IDHttp模拟提交,当然你最好先用wpe抓包工具,取到它提交的都是那些信息,然后IDHttp.post后看看返回的结果
      

  3.   

    uses WinInet;function GetWebPage(const Url: string):string;
    var
      Session,
      HttpFile:HINTERNET;
      szSizeBuffer:Pointer;
      dwLengthSizeBuffer:DWord;
      dwReserved:DWord;
      dwFileSize:DWord;
      dwBytesRead:DWord;
      Contents:PChar;
    begin
      Session:=InternetOpen('',0,niL,niL,0);
      HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
      dwLengthSizeBuffer:=1024;
      HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
      GetMem(Contents,dwFileSize);
      InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
      InternetCloseHandle(HttpFile);
      InternetCloseHandle(Session);
      Result:=StrPas(Contents);
      FreeMem(Contents);
    end;调用showmessage( GetWebPage('http://www.126.com'));
      

  4.   

    IHtmlDocument2(WebBrowser1.Document).Body.OuterText
      

  5.   


    不是源代码~~~ 你指的是 body 里的