![]() |
Startseite einer Website mit Synapse herunterladen
Hallo,
also ich hab in der Vergangenheit hin und wieder kleine Tools für meinen Gebrauch unter Windows in Delphi realisiert. Da ich mich nun mehr & mehr aus verschiedensten Gründen zu Linux hingezogen fühle bin ich auf Lazarus gestoßen. Eine tolle Sache & auch noch Free, besser geht es nicht. :) Nun zum eigentlichen, ich habe eine Liste von Urls die ich nach und nach abarbeiten und die jeweiligen Startseiten (index.html, index.php, etc.) lokal als Textdatei speichern möchte. Ich hab mich nun schon mehrmals mit Google über dieses Thema unterhalten, dabei stieß ich auch auf Threads in diesem Forum, der förderte mir die Synapse Units zu tage ... das funktioniert allerdings nur teilweise ... Hier mal der Code:
Code:
In Memo1 sind folgende Zeilen enthalten:
procedure DownloadUrl(Url: String; Fn : String);
var t:TStringList; i:longint; begin with THTTPSend.Create do try Log('Navigiere zu '+Url); HTTPMethod('GET',Url); t := TStringList.Create; t.LoadFromStream(Document); t.savetofile('Test.txt'); If T.Count > 0 then Begin Log ('Lese Quelltext von "'+Url+'" ein.'); T.SaveToFile(Fn); end else Log ('Adresse "'+url+'" nicht gefunden.'); finally t.Free; end; Log('Bereit.'); end; ... procedure TMain.Button5Click(Sender: TObject); var i : integer; begin For I := 0 to Memo1.Lines.Count-1 do Begin DownloadUrl(Memo1.Lines[i],inttostr(I)+'.txt'); End; end; ![]() ![]() Mit der ersten Url funktioniert es, mit der zweiten nicht .... In einem anderem Forum in dem allerdings scheinbar nicht so viel los ist, habe ich den Lösungsansatz erhalten, dass es wohl mit dem Redirect zu tun haben könnte (ist wohl nicht ganz abgwegig), leider muss ich zugeben das ich keine Ahnung habe wie ich das abändern kann. Vielleicht kann mir ja hier jemand helfen? Vorab vielen Dank, Patrick. |
AW: Startseite einer Website mit Synapse herunterladen
Zwischenzeitlich hab ich in dem anderen Forum eine Antwort erhalten, die für meine Bedürfnisse ausreichend ist. Hier geht man zwar von der Synapse-Unit weg und nutzt die mit Lazarus ausgelieferte "fphttpclient", doch am Ende ist ja bekanntlich das Ziel relevant und nicht der Weg. :) Hier noch der entsprechende Code ...
Code:
An der Stelle einen großen Dank an den User aus dem anderen Forum der mir bei dem Problem geholfen hat. :) Und natürlich auch danke an jeden der sich die Zeit genommen hat sich mein Problem durchzulesen.uses fphttpclient; function DownloadHTTP(URL: String; AStream: TStream; out AErrMsg: String): Boolean; begin AErrMsg := ''; with TFPHTTPClient.Create(nil) do try AllowRedirect := true; try Get(URL, AStream); Result := (ResponseStatusCode = 200); if not Result then AErrMsg := ResponseStatusText; except Result := false; AErrMsg := 'Fehler, z.B. URL existiert nicht.'; end; finally Free; end; end procedure Log(AMsg: String); begin Form1.Memo2.Lines.Add(AMsg); end; procedure DownloadURL(URL: String; FN: String); var stream: TMemoryStream; errmsg: String; t:TStringList; i:longint; begin stream := TMemoryStream.Create; try Log('Lese Quelltext von "' + URL + '" ein:'); if DownloadHTTP(URL, stream, errmsg) then begin stream.SaveToFile(FN); Log('--> OK (' + IntToStr(stream.Size) + ' Bytes gelesen)'); end else Log('--> Fehler: ' + errmsg); finally stream.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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