Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML Quellcode auslesen (https://www.delphipraxis.net/88032-html-quellcode-auslesen.html)

delphinia 9. Mär 2007 07:20


HTML Quellcode auslesen
 
Ich mmöchte gerne den Quelltext von dem aktuell geöffnenten InternetExplorer Fenster einlesen - wie?!

Angel4585 9. Mär 2007 07:35

Re: HTML Quellcode auslesen
 
rechtsklick->Quelltext anzeigen ;)

delphinia 9. Mär 2007 07:37

Re: HTML Quellcode auslesen
 
Ha ho - scherzkecks

Ich denke ich würde hier nicht posten wenn ich ihn so sehen möchte - natürlich möchte ich diesen in meinem Programm weiterverarbeiten

Angel4585 9. Mär 2007 08:06

Re: HTML Quellcode auslesen
 
dann hol dir den Quelltext per TIdHttp.Get(); oder öffne das ganze im TWebBrowser und lies dir da den Quelltext aus.. was du dann weiterverarbeitest überlasse ich dir ;)

delphinia 9. Mär 2007 08:09

Re: HTML Quellcode auslesen
 
Das geht nicht es MUSS das aktuelle offene Fenster sein und es muss daraus gelesen werden!
Das mit dem TIdHttp.Get hab ich schon versucht dadurch wird aber eine neue ID von der Website erzeugt und habe KEINEN Zugriff mehr auf den eigendlichen Inhalt!

shmia 9. Mär 2007 09:34

Re: HTML Quellcode auslesen
 
Mit folgenden Funktionen kannst du HTML aus dem WebBrowser-Objekt setzen oder auslesen.
Die Funktionen Document_SetHTML und Document_GetHTML gibt es deshalb, weil
es bei Webseiten mit Frames ja mehrere "Documents" gibt.

Delphi-Quellcode:
uses Windows, Classes, Forms, ActiveX, ComObj, SysUtils, SHDocVw;

procedure Document_SetHTML(Document: IDispatch; const HTMLCode: string);
var
  ms: TStringStream;
begin
   if Assigned(Document) then
   begin
      ms := TStringStream.Create(HTMLCode);
      try
         ms.Seek(0, 0);
         OleCheck((Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)));
      finally
         ms.Free;
      end;
   end;
end;

function Document_GetHTML(Document: IDispatch):string;
var
   ms: TStringStream;
begin
   Result := '';
   if Assigned(Document) then
   begin
      ms := TStringStream.Create(Result);
      try
         OleCheck((Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms),False));
         Result := ms.DataString;
      finally
         ms.Free;
      end;
   end;
end;



procedure WB_SetHTML(WebBrowser: TWebBrowser; const HTMLCode: string);
begin
   if not Assigned(WebBrowser.Document) then
      WebBrowser.Navigate('about:blank');
   while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
      Application.ProcessMessages;

   Document_SetHTML(WebBrowser.Document, HTMLCode);
end;
function WB_GetHTML(WebBrowser: TWebBrowser): string;
begin
   Result := Document_GetHTML(WebBrowser.Document);
end;

delphinia 9. Mär 2007 09:51

Re: HTML Quellcode auslesen
 
hmm und wie erhalte ich nun vom aktiven Fenster die daten?

shmia 9. Mär 2007 09:53

Re: HTML Quellcode auslesen
 
Zitat:

Zitat von delphinia
hmm und wie erhalte ich nun vom aktiven Fenster die daten?

Delphi-Quellcode:
var
   htlm_code:string;
begin
   htlm_code := WB_GetHTML(WebBrowser1);
Eigentlich ganz einfach, oder ?

delphinia 9. Mär 2007 09:56

Re: HTML Quellcode auslesen
 
dachte ich mir schon NUR gibt es bei mir kein "WebBrowser1"...

Du hast wohl überlesen, das ich den IE an sich meine KEIN Webbrowser in MEINER Anwendung!

Zitat :"geöffnenten InternetExplorer Fenster einlesen - wie?!"

Danek dir aber für Deine Mühe

shmia 9. Mär 2007 10:17

Re: HTML Quellcode auslesen
 
Zitat:

Zitat von delphinia
Du hast wohl überlesen, das ich den IE an sich meine KEIN Webbrowser in MEINER Anwendung!

Dann musst du zuerst alle offenen Instanzen ermitteln.
Hier ein Beispiel Codeschnippsel:
Delphi-Quellcode:
var
   sws : IShellWindows;
   sw : IDispatch;
   i : Integer;
   wb : IWebBrowser2;
begin
   sws := CoShellWindows.Create;

   // Schleife über alle offenen IE-Browser
   for i := 0 to sws.Count-1 do
   begin
      sw := sws.Item(i);
      wb := sw as IWebBrowser2;

      Memo1.Lines.Add(wb.LocationURL);
      if (Copy(wb.LocationURL, 1, 5) = 'http:') and wb.Visible then
      begin
         Memo1.Lines.Add('========HTML===========');
         Memo1.Lines.Add(Document_GetHTML(wb.Document));
      end;
   end;
end;
Dann musst du prüfen, ob überhaupt HTML geladen ist.:
wb.LocationURL muss mit http: oder https: beginnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Seite 1 von 2  1 2      

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