[英]How can I get HTML source code from TWebBrowser
如何從 WebBrowser 組件獲取源代碼?
我想獲取 WebBrowser 組件上活動頁面的源代碼並將其寫入 Memo 組件。
謝謝。
您可以使用IPersistStreamInit
接口和save方法將 Webbrowser 的內容存儲在 Stream 中。
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;
這已在 Embarcadero 論壇中被多次詢問和回答,並發布了大量代碼示例。 搜索檔案。
它的要點是您Navigate()
到所需的 URL 並等待OnDocumentComplete
事件觸發,然后QueryInterface()
IPersistStreamInit
接口的Document
屬性並調用其save()
方法。 創建一個TStream
object 實例,例如TMemoryStream
,將其包裝在TStreamAdapter
object 中,然后將適配器傳遞給save()
。 然后,您可以根據需要將TStream
加載到TMemo
中。
為什么不快速而骯臟:
OnNavigateComplete2()
Form1.RichEdit1.Text:=(WebBrowser1.OleObject.Document.documentElement.outerhtml);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.