Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#1

Quellcode einer Webseite herunterladen

  Alt 11. Jul 2012, 21:41
Ich möchte den Quellcode einer Webseite herunterladen und auswerten.
Zurzeit mache ich das manuell indem ich auf der Webseite "Quellcode anzeigen" wähle.
Dann erscheint ein neues Fenster, das ein RichEdit enthält, in dem der Quellcode steht.
Mit Strg-A und Strg-C kopiere ich den gesamten Inhalt ins Clipboard, das mein Programm dann auswertet.

Nun möchte ich das automatisieren, d.h. mein Programm soll im Hintergrund laufen und alle paar Minuten ohne mein Zutun den Quellcode herunterladen und auswerten.
Ich habe hier auch schon einige Beiträge gelesen und die gezeigten Routinen ausprobiert, leider ohne Erfolg.

Dieses scheint zumindest teilweise zu funktionieren, liefert aber nur einen kleinen Teil der Daten und auch innerhalb dieses Teiles fehlen einige Daten.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   IdHttp:TIdHttp;
   data:string;
begin
   // data:=LoadUrl('http://www.030chat.de');
   idHttp:=TIdHttp.Create;
   Data := IdHTTP.Get('http://www.030chat.de');
   idHttp.Free;
   Memo1.Text:=data;
end;
Ein anderes das ich ausprobierte liefert einen leeren String, obwohl ein paar Daten geladen wurden.
Delphi-Quellcode:
function LoadURL(URL: String): String;
var
   IOpen, IURL: HINTERNET;
   Read: Cardinal;
   Msg: array[0..4096] of Char;
begin
   Result := '';
   IOpen := InternetOpen('GetIP', INTERNET_OPEN_TYPE_PRECONFIG, '', '',
                         INTERNET_FLAG_NEED_FILE);
   if IOpen <> nil then
   try
     IURL := InternetOpenUrl(IOpen, PWideChar(URL), nil, 0,
                             INTERNET_FLAG_NO_UI or INTERNET_FLAG_PRAGMA_NOCACHE
                             or INTERNET_FLAG_RELOAD, 0);
     if IURL <> nil then
     try
       repeat
         FillChar(Msg, SizeOf(Msg), 0);
         if InternetReadFile(IURL, @Msg[0], Pred(SizeOf(Msg)), Read) then
           Result := Result + Msg else
             Break;
       until Read = 0;
     finally
       InternetCloseHandle(IURL);
     end;
   finally
     InternetCloseHandle(IOpen);
   end;
end;
Das dritte, das ich probiert habe basiert auf TWebBrowser, liefert aber, wie das erste nur einen kleinen Teil der Daten (anscheinend nur den Header der Seite).

Ich habe mich bisher nie mit "Internet" beschäftigt, stehe sozusagen auf dem Schlauch und bekomme Verständnis für Beiträge in denen jemand fragt "wie kann ich zwei Zahlen addieren".

Könnte mir bitte jemand weiterhelfen ?
Was ich vorzugsweise möchte, ist das, was ich bei eingangs beschriebener Vorgehensweise erhalte.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat