![]() |
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; |
AW: Quellcode einer Webseite herunterladen
Habe alles ausprobiert, alles was offenbar bei allen funktioniert, funktioniert (außer dem was shmia gepostet hat) bei mir leider nicht.
Vielen Dank an alle und ganz besonderen Dank an shmia. Problem gelöst und ich bin happy. |
AW: Quellcode einer Webseite herunterladen
Zitat:
|
AW: Quellcode einer Webseite herunterladen
Mit einer für meine Zwecke umgemodelten Version von shmias Projekt.
Delphi-Quellcode:
class function TMain.CreateRequestObject: IXMLHTTPRequest;
begin try Result := Createoleobject('Msxml2.XMLHTTP.6.0') as IXMLHTTPRequest; except on E:Exception do begin E.Message := 'MSXML 4.0 or higher required!'#13#10+E.Message; raise; end; end; end;
Delphi-Quellcode:
FUNCTION TMain.ReadSourceCode(const url:string; var headers,texts:string):boolean;
const header='User-Agent'; value='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)'; var req:IXMLHTTPRequest; body:OleVariant; begin req := CreateRequestObject; req.Open('GET', url, false, '', ''); req.SetRequestHeader(header, value); body := ''; req.Send(body); headers:=req.GetAllResponseHeaders; texts:=req.ResponseText; result:=req.statusText='OK'; end; |
AW: Quellcode einer Webseite herunterladen
Hallo!
Hab mir das Programm xmlhttprequest.zip angesehen und es macht genau das was ich auch machen will. Wollte es mit Borland Enterprise 7 compilieren , scheitert aber daran das eine Komponente nicht gefunden wird und zwar MSXML2_TLB. Welche Version von MSXML muss ich hier instzellieren ? (Ich verwende Windows 7 64 Bit und Borland Delphi 7 Enterprise..) So MSXML 4.0 Service Pack 2 ist jetzt instlaliert und exportiert. Das funktioniert jetzt. Nur kommt jetzt beim Kompilieren wieder ein Fehler :( [Fehler] Unit1.pas(90): Undefinierter Bezeichner: 'EmptyParam' . Hmzz Auch erledigt : Unter Delphi 7 muss die Unit Variants.pas eingebunden werden. Funktioniert jetzt :) Jetzt kann ichs meinen Wünschen anpassen *freu* Sorry, hab schon lange nichts mehr mit Delphi gemacht (doch schon mehr als 10 Jahre her)... Folgendes will ich jedenfalls probieren : Würde gerne die Holidaycheckseite mit einer vordefinierten Abfrage automatisch auswerten (in einem gewissen Interval) und bei einem gewissen Schwellwert (Preis) ein Mail an mich verschicken. So brauch ich nicht jeden Tag nachsehen obs ein Neues Angebot mit meinen speziellen Angaben gibt Die URL der Seite welche ausgewertet werden soll sieht zb. so aus (hier sind alle gewünschten Optionen enthalten- je nach Abfrage ändern sich natürlich die URL..) : ![]() Ich will jetzt den Bereich wo class="offerlistItem.." davor steht auswerten und aufbereiten und wenn der Preis unter einem bestimmten Wert fällt eine Mail verschicken. Mal schauen ob es auch möglich ist das Angebot Prüfen auch auszuwerten... vielen Dank DeCi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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