Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Startseite einer Website mit Synapse herunterladen (https://www.delphipraxis.net/193432-startseite-einer-website-mit-synapse-herunterladen.html)

MisterSonic 30. Jul 2017 21:00

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:
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;
In Memo1 sind folgende Zeilen enthalten:

http://www.klebe-portal.de
http://www.maler-ehrt-halle.de

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.

MisterSonic 31. Jul 2017 07:05

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:

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;
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.

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