![]() |
Quellcode einer Webseite herunterladen
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:
Ein anderes das ich ausprobierte liefert einen leeren String, obwohl ein paar Daten geladen wurden.
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;
Delphi-Quellcode:
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).
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; 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. |
AW: Quellcode einer Webseite herunterladen
Tja. Das ist recht einfach. Dir scheint es bei der Seite um die Tabelle zu gehen?
Wenn Du Dir die eigentliche Antwort bei der URL anschaust, dann siehst Du folgendes:
Code:
Das heisst die Webseite verwendet Frames. Einen Links mit der Navi, und einen rechts mit dem Hauptteil der Seite drin.
<FRAMESET cols="120,*" FRAMEBORDER=0 FRAMESPACING=0 SCROLLING="AUTO" BORDER=0>
<FRAME SRC="navi.htm" NAME="webnavi" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5> <FRAME SRC="online.html" NAME="webmain" SCROLLING="AUTO" MARGINHEIGHT=5 MARGINWIDTH=5> </FRAMESET> Das ist wohl der interessante Teil und dort steht auch der Pfad: Online.html. Das heisst wenn Du nun ![]() Versuch das mal als Adresse und dann schau mal wie Du die Antwort auswerten kannst. |
AW: Quellcode einer Webseite herunterladen
|
AW: Quellcode einer Webseite herunterladen
Zitat:
habe ich ausprobiert, funktioniert aber leider nicht. Beim Data := IdHTTP.Get('http://www.030chat.de/online.html'); hängt "sich das auf". Da scheint eine endlos-Schleife zu laufen. (CPU-Auslastung 12 %, also "eine CPU voll ausgelastet). Die Webseite funktioniert (Das Get… ohne "/online.html" läuft wie bisher. |
AW: Quellcode einer Webseite herunterladen
Vielleicht hilft davon etwas:
Welche Indy-Version verwendest du? Vielleicht behebt ein Update das Problem. |
AW: Quellcode einer Webseite herunterladen
Zitat:
danke für die Hinweise. HandleRedirects hab ich auf True gesetzt, bringt keine anderen Ergebnisse. UserAgent enthält "Mozilla/3.0 (compatible; Indy Library)" – muss ich da was ändern ? Und wenn ja, was muss ich da reinschreiben? Die Indy-Version scheint 10.5.7 zu sein. Und last not least "TIdCookieManager zuweisen" Wie mache ich das? Ich hab keinerlei Erfahrung auf diesem Gebiet. |
AW: Quellcode einer Webseite herunterladen
Zitat:
Weitere: ![]() Zitat:
|
AW: Quellcode einer Webseite herunterladen
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich kann die Seite
![]() Cookies werden keine gesetzt und es wird auch kein Redirect angeboten. Testprogramm ist im Anhang. |
AW: Quellcode einer Webseite herunterladen
Bei mir gibt es auch keine Probleme (Delphi XE): Mit den enthaltenen Indy-Komponenten funktioniert das Laden der Seite. Cookies sind ebenso egal wie der User-Agent.
Delphi-Quellcode:
HTTP:=TIdHTTP.Create;
try Content:=HTTP.Get('http://www.030chat.de/online.html'); HTTP.Response.RawHeaders.ConvertToStdValues(Memo1.Lines); Memo1.Lines.Add(Content); finally HTTP.Free; end; |
AW: Quellcode einer Webseite herunterladen
Bei mir gehts auch (Delphi 2009 Pro + Indy 10)
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var http: TIdHTTP; begin http := TIdHTTP.Create(nil); try Memo1.Text := http.Get('http://www.030chat.de/online.html'); finally FreeAndNil(http); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz