代码如下:
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"请大大们帮忙看看
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"请大大们帮忙看看
解决方案 »
- 如何获取制定网站目录内的所有文件列表呢
- 如何使用WindowsAPI向ComboBoxEx中添加一个ITEM
- PaintBox如何加滚动条啊?
- FData->QTemp->FieldByName("number")->AsInteger问题
- 如何判断数据库是否有同名的表存在呀?
- 请问如何把一个字符串中的*号全部换为#号
- 征求意见,我有一个ADSL上网计时程序,我想公开源代码并且遵循GNU规则!觉得支持的请进来说一下!
- Windows内存管理机制的不惑
- 我怎么有adocommand创建sql server 中的数据库,如果我创建的数据库已经存在,怎么办?
- 新手提问,工具条消息的自动映射出了问题
- Image画板闪的问题
- CXGRID中的字段如何能以0.00的格式显示
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; 嘿,也是不行的啦,我本想抓数据的,却是抓出了一大堆网页代码出来,还不包含里面的数据呢。
这个代码就在浏览器里按右键->查看源文件 都可以看得到啦。 我要的是网页里可以看到的数据啦,乱点没关系,只要能拿得到,嘿嘿
难道真是彼波好抓此波不好抓?有哪位英雄帮我抓到此波,我就请你抓彼波,哈哈哈
------------------------- 也不行啊,反正到了
webbrowser1.oleobject.document.documentelement.document.frames.item(0).document
就有错误啦,英雄帮帮忙吧!