L
lqy169
Unregistered / Unconfirmed
GUEST, unregistred user!
我查了很久,论坛上关于取IE中网页源文件的方法有 五
1
doc:=webbrowser1.document as ihtmldocument2;
all:=doc.all;
item:=all.item(0,varEmpty);
Memo1.Clear;
memo1.Lines.Add(item.innerhtml);//item.innerhtml就是源文件内容
这种方法我最不明白,我这样做一点内容都没有,就是 ''
2
for i:=1 to webbrower.document.all.length-1 do
memo1.lines.add(webbrower.document.all.item(i).outerHTML);
这个最离谱,大家试试就知道
3
var HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
...
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
Persist := HTMLDocument as IPersistFile;
Persist.Save(StringToOleStr('test.htm'), True);
while HTMLDocument.readyState <> 'complete' do
Application.ProcessMessages;
这就是hubdog大虾的答案了,也是我见过最好的方法,但是有个问题
在 webbrowser在的document可以找到 IPersistFile 接口
但在 IE 中得到的 document 接口却找不到 IPersistFile 接口
4
var
IpStream: IPersistStreamInit;
begin
with browser1 do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(Document) then
begin
IpStream := Document as IPersistStreamInit;
Result := IpStream.save(TStreamAdapter.Create(AStream), TRUE);
end else Result := S_FALSE;
end;
end;
这个也是hubdog大虾的答案了,也是很好的方法,特别是
TStreamAdapter.Create(AStream) 这句用得很精采
但同样在 IE 中得到的 document 接口却找不到 IPersistStreamInit 接口
5
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml);
这个方法看来最简单,但得到的源文件是不完整的,只能得到
<body> 到 </body>中的内容,前和后的内容都没有
以上5利方法都不能从IE中得到网页源文件,请问hubdog大虾还有什么方法
(和发现 IE中得到的 document 和 webbrowser 得到的有很多不同的地方)
1
doc:=webbrowser1.document as ihtmldocument2;
all:=doc.all;
item:=all.item(0,varEmpty);
Memo1.Clear;
memo1.Lines.Add(item.innerhtml);//item.innerhtml就是源文件内容
这种方法我最不明白,我这样做一点内容都没有,就是 ''
2
for i:=1 to webbrower.document.all.length-1 do
memo1.lines.add(webbrower.document.all.item(i).outerHTML);
这个最离谱,大家试试就知道
3
var HTMLDocument: IHTMLDocument2;
PersistFile: IPersistFile;
begin
...
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
Persist := HTMLDocument as IPersistFile;
Persist.Save(StringToOleStr('test.htm'), True);
while HTMLDocument.readyState <> 'complete' do
Application.ProcessMessages;
这就是hubdog大虾的答案了,也是我见过最好的方法,但是有个问题
在 webbrowser在的document可以找到 IPersistFile 接口
但在 IE 中得到的 document 接口却找不到 IPersistFile 接口
4
var
IpStream: IPersistStreamInit;
begin
with browser1 do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(Document) then
begin
IpStream := Document as IPersistStreamInit;
Result := IpStream.save(TStreamAdapter.Create(AStream), TRUE);
end else Result := S_FALSE;
end;
end;
这个也是hubdog大虾的答案了,也是很好的方法,特别是
TStreamAdapter.Create(AStream) 这句用得很精采
但同样在 IE 中得到的 document 接口却找不到 IPersistStreamInit 接口
5
Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml);
这个方法看来最简单,但得到的源文件是不完整的,只能得到
<body> 到 </body>中的内容,前和后的内容都没有
以上5利方法都不能从IE中得到网页源文件,请问hubdog大虾还有什么方法
(和发现 IE中得到的 document 和 webbrowser 得到的有很多不同的地方)