Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbrowser quelltext auslesen (https://www.delphipraxis.net/97292-webbrowser-quelltext-auslesen.html)

Digielm 8. Aug 2007 07:14


Webbrowser quelltext auslesen
 
Delphi-Quellcode:
     myDocument:=webbrowser1.Document;
     browsertext := htmtext + myDocument.body.outerhtml+'</html>' ;
so lese ich den Browsertext aus habe aber damit ein Problem wenn sich z.b. noch Styles in dem Dokument befinden.

Wie bekomme ich die denn dann auch noch raus ??

Bernhard Geyer 8. Aug 2007 07:30

Re: Webbrowser quelltext auslesen
 
Du solltest das auslesen mittels DOM durchführen. Dazu steht dir die Unit Hier im Forum suchenMSHTML zur verfügung mit welcher du den Quelltext auch als HTML-Objektbaum auslesen kannst und auch verwendete CSS/JS/...-Dateien einfach erkennen kannst.

marabu 8. Aug 2007 09:03

Re: Webbrowser quelltext auslesen
 
Hallo,

einfacher als über das HTML-DOM kann man das geladene Dokument über die IPersistStream-Schnittstellen auslesen, die von fast allen MS-Komponenten unterstützt werden. Die Prozedur DocToStrings() liefert den HTML-Quelltext als StringList, aber auch die Rückgabe als String sollte mit ein paar minimalen Änderungen kein Problem darstellen:

Delphi-Quellcode:
function DocToString(doc: IDispatch): string;
var
  ps: IPersistStreamInit;
  sa: IStream;
  s: TStringStream;
begin
  if Succeeded(doc.QueryInterface(IPersistStreamInit, ps)) then
  begin
    s := TStringStream.Create('');
    sa := TStreamAdapter.Create(s, soReference) as IStream;
    if Succeeded(ps.Save(sa, True))
      then Result := s.DataString
      else Result := '';
    s.Free;
  end;
end;
Grüße vom marabu

Digielm 10. Aug 2007 14:20

Re: Webbrowser quelltext auslesen
 
Ja die Routine kenne ich aber hab das Problem das das dann im UTF 16 Format ist und ich das nicht unter delpi 5 nicht sauber angezeigt bekomme

marabu 10. Aug 2007 14:43

Re: Webbrowser quelltext auslesen
 
Hallo,

die gezeigte Funktion arbeitet mit ANSI-kodierten Dokumenten. Wenn der Server dir anders kodierte Daten übermittelt, dann musst du einfach die unbedingte Zuweisung an Result durch eine bedingte ersetzen. WideStrings (UTF-16) sind ja leicht zu erkennen bzw. umzuwandeln und der Rest kann einfach mit Utf8ToAnsi() konvertiert werden. Wenn du nicht zurecht kommst, dann beschreibe mal genau, wo es hakt.

Freundliche Grüße

Digielm 11. Aug 2007 16:59

Re: Webbrowser quelltext auslesen
 
Ich habe die Funktion in Delphi 5 leider nicht drin um diese dann so zu konvertieren :-(


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz