簡體   English   中英

如何從 TWebBrowser 獲取 HTML 源代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM