代码如下:
i:=webbrowser1.oleobject.document.documentelement.document.frames.length;
memo1.Lines.Add('have Frames: '+inttostr(i));
for j:=0 to i-1 do
begin
memo1.lines.add('');
memo1.Lines.Add('Frame '+inttostr(j+1)+' from here');
memo1.Lines.Add(webbrowser1.oleobject.document.documentelement.document.frames.item(j).document.documentelement.innerhtml);
End;运行的时候得到frame有两个.

memo1.lines.add(webbrowser1.oleobject.document.documentelement.document.frames.item(0).document.documentelement.innerhtml);时候,程序运行出现下面错误"Project Project1.exe raised exception class EOleException with message'拒绝访问'.Process
stopped.Use Step or Run to continue"请大大们帮忙看看

解决方案 »

  1.   

    近来想做个程序方便看看波(不是女人的,^O^),想把网站的数据都抓下来,可是,女人的波比它还好抓,大家请看     webbrowser1.Navigate( "http://bet.sportsgg.com/asia.shtml "); //嘿嘿,就是这个网址啦,不知是用什么技术做的     i   :=   webbrowser1.oleobject.document.frames.length;   //得到frame的数量为2,不信你可以试试     for   j   :=   0   to   i   -   1   do 
        begin 
              s1   :=   webbrowser1.oleobject.document.frames.item(j).document.innertext;   
                str:=str+s1;               
        end; 平时用来抓其它的网站,没事,但抓这个(非女人)波网,就“拒绝访问”,OH,Shit,怎么回事? 用outertext也不行 webbrowser1.oleobject.document.documentelement. 
    document.frames.item(j).document.documentelement.innertext   也一样的不行,不用多心啦。 就是在 
    webbrowser1.oleobject.document.frames.item(j).document 
    这个东西被拒绝访问的。 ---- 用了刘洋(Liu_Yang好像很出名哦)的方法如下: function   TForm1.GetFrame(FrameNo:   Integer):   IWebbrowser2; 
    var 
        OleContainer:   IOleContainer; 
        enum:   IEnumUnknown; 
        unk:   IUnknown; 
        Fetched:   PLongint; 
    begin 
        while   Webbrowser1.ReadyState   < >   READYSTATE_COMPLETE   do 
            Application.ProcessMessages; 
        if   Assigned(Webbrowser1.document)   then 
        begin 
            Fetched   :=   nil; 
            OleContainer   :=   Webbrowser1.Document   as   IOleContainer; 
            OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,   Enum); 
            Enum.Skip(FrameNo); 
            Enum.Next(1,   Unk,   Fetched); 
            Result   :=   Unk   as   IWebbrowser2; 
        end 
        else 
            Result   :=   nil; 
    end; procedure   TForm1.dButton1Click(Sender:   TObject); 
    var 
        IpStream:   IPersistStreamInit; 
        AStream:   TMemoryStream; 
        iw:   IWebbrowser2; 
        i:   Integer; 
        sl:   TStringList; 
    begin 
        for   i   :=   0   to   Webbrowser1.OleObject.Document.frames.Length   -   1   do 
        begin 
            iw   :=   GetFrame(i); 
            AStream   :=   TMemoryStream.Create; 
            try 
                IpStream   :=   iw.document   as   IPersistStreamInit; 
                if   Succeeded(IpStream.save(TStreamadapter.Create(AStream),   True))   then 
                begin 
                    AStream.Seek(0,   0); 
                    memo1.Lines.LoadFromStream(AStream); 
                    sl.Free; 
                end; 
            except 
            end; 
            AStream.Free; 
        end; end; 嘿,也是不行的啦,我本想抓数据的,却是抓出了一大堆网页代码出来,还不包含里面的数据呢。 
    这个代码就在浏览器里按右键->查看源文件 都可以看得到啦。 我要的是网页里可以看到的数据啦,乱点没关系,只要能拿得到,嘿嘿 
    难道真是彼波好抓此波不好抓?有哪位英雄帮我抓到此波,我就请你抓彼波,哈哈哈 
      

  2.   

    memo1.lines.add(webbrowser1.oleobject.document.documentelement.document.frames.item(0).document.body.innerhtml); 这里改一下试试document.body.innerhtml); 
      

  3.   

    to: wintergoesmemo1.lines.add(webbrowser1.oleobject.document.documentelement.document.frames.item(0).document.body.innerhtml);   这里改一下试试document.body.innerhtml); 
    -------------------------  也不行啊,反正到了
    webbrowser1.oleobject.document.documentelement.document.frames.item(0).document
    就有错误啦,英雄帮帮忙吧!