我该如何从WebBrowser组件获取源代码?
我想要获取WebBrowser组件上激活页面的源代码并将其写入备忘录组件。
谢谢。
我该如何从WebBrowser组件获取源代码?
我想要获取WebBrowser组件上激活页面的源代码并将其写入备忘录组件。
谢谢。
您可以使用 IPersistStreamInit
接口和 save 方法将Web浏览器的内容存储在数据流中。
Uses
ActiveX;
function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
LStream: TStringStream;
Stream : IStream;
LPersistStreamInit : IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then exit;
LStream := TStringStream.Create('');
try
LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
Stream := TStreamAdapter.Create(LStream,soReference);
LPersistStreamInit.Save(Stream,true);
result := LStream.DataString;
finally
LStream.Free();
end;
end;
uses MSHTML;
function GetHTML(w: TWebBrowser): String;
Var
e: IHTMLElement;
begin
Result := '';
if Assigned(w.Document) then
begin
e := (w.Document as IHTMLDocument2).body;
while e.parentElement <> nil do
begin
e := e.parentElement;
end;
Result := e.outerHTML;
end;
end;
document
元素的DOM表示,而不是HTML源代码。 - kobikNavigate()
方法导航到所需的 URL 并等待 OnDocumentComplete
事件触发,然后对 Document
属性调用 QueryInterface()
方法以获取 IPersistStreamInit
接口,并调用其 save()
方法。创建一个 TStream
对象实例,例如 TMemoryStream
,将其包装在 TStreamAdapter
对象中,然后将适配器传递给 save()
方法。然后,您可以根据需要将 TStream
加载到 TMemo
中。OnNavigateComplete2()
Form1.RichEdit1.Text:=(WebBrowser1.OleObject.Document.documentElement.outerhtml);
LStream := TStringStream.Create('', TEncoding.UTF8);
- user1580348