如何从TWebBrowser获取HTML源代码

Lea*_*dri 10 delphi delphi-7 twebbrowser

如何从WebBrowser组件获取源代码?

我想在WebBrowser组件上获取活动页面的源代码并将其写入Memo组件.

谢谢.

RRU*_*RUZ 18

您可以使用IPersistStreamInitInterface和save方法将Web浏览器的内容存储在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;
Run Code Online (Sandbox Code Playgroud)

  • 更好:`LStream := TStringStream.Create('', TEncoding.UTF8);` (2认同)

Meh*_*ide 5

这也很好用:

    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;
Run Code Online (Sandbox Code Playgroud)