Eine Datei downloaden, wie automatisieren?

Hallo,

ich möchte täglich eine Datei von einer Seite herunterladen, deren Namen sich immer ändert. (Nicht immer nach gleichem Schema).

Um diese Datei automatisch herunterzuladen wollte ich ein Perl Script schreiben. Bin ich mit Perl überhaupt in der richtigen Sprache, oder reicht schon ein PHP Script, oder ähnliches?

Die Funktionsweise ist folgende:

Seite wird vom Programm aufgerufen, geladen oder wie auch immer.
An einer bestimmten Stelle im Quelltext dieser Seite steht der aktuelle
Dateiname als Link drauf. Die Dateiendung ist immer dieselbe.
Das Programm findet die Stelle mit dem Dateilink anhand eines eindeutigen Merkmals, z.b. anhand der Dateiendung.
Dieser Link wird nun aufgerufen, und damit automatisch der Download gestartet.

Alternativ muss der Download nicht starten, sondern einfach der Link in eine Textdatei auf die Festplatte abgespeichert werden.

Weiss jemand ungefähr wie so etwas aussehen könnte und welche der Scriptsprachen dafür geeignet ist?

Vielen Dank!

Hallo Nick,

ich weiß nicht, aber vielleicht wäre mein Redirector interessant für dich:
http://www.patshaping.de/redirector/
Zumindest kommt es mir so vor, als könnte er dir was bringen…

Viele Grüße
Patrick Canterino

Hallo,

danke für deinen Tip, aber der Redirector liest ja nicht aus der geladenen Seite die benötigte URL. Insofern kann ich leider wenig damit anfangen.

Kennt niemand eine Lösung?

Hallo !

Um diese Datei automatisch herunterzuladen wollte ich ein Perl
Script schreiben. Bin ich mit Perl überhaupt in der richtigen
Sprache, oder reicht schon ein PHP Script, oder ähnliches?

Wenn du dich in PHP besser auskennst, nimm PHP, das, was du vorhast, geht in beiden Sprachen.

Die Funktionsweise ist folgende:

Seite wird vom Programm aufgerufen, geladen oder wie auch
immer.

Perl:
use LWP::Simple;
$seite = get("http://deine.url/seite.html");

PHP:
$seite = file_get_contents(„http://deine.url/seite.html");
oder (altes PHP):
$seite = implode(“\n", file("http://deine.url/seite.html")));

An einer bestimmten Stelle im Quelltext dieser Seite steht der
aktuelle
Dateiname als Link drauf. Die Dateiendung ist immer dieselbe.
Das Programm findet die Stelle mit dem Dateilink anhand eines
eindeutigen Merkmals, z.b. anhand der Dateiendung.

Per RegEx extrahieren,
Perl: $seite =~ m/

Hi,

habe dir gleich einen Bewertungsstern vergeben. Das mit PHP klingt gut, soweit ich weiss muss man das in eine HTML Datei packen, und das ganze irgendwie einleiten, kann aber z.B. auf Selfphp nichts finden.
Die Funktion Implode ist auch nur als Arrayfunktion deklariert, da wäre ich nicht spontan auf das herunterladen einer Seite gekommen…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

habe gerade php …usw usw… ?> ausprobiert, und in eine Datei.php
geschrieben, aber der Internet Explorer zeigt mir den Inhalt der Datei an, anstatt das Script auszuführen, was mache ich falsch?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

habe gerade php …usw usw… ?> ausprobiert, und in
eine Datei.php
geschrieben, aber der Internet Explorer zeigt mir den Inhalt
der Datei an, anstatt das Script auszuführen, was mache ich
falsch?

PHP ist serverseitig, d.h. es wird ein Webserver und der PHP Interpreter benötigt, um das im Browser auszuführen.
Es gibt auch einen Kommandozeileninterpreter, mit dem das Ganze ohne Browser von der Kommandozeile (Eingabeaufforderung) auf starten kann (dann braucht man keinen Webserver).

http://www.apachefriends.de (Alles in einem Paket)
http://www.php.net
http://www.apache.org

Für Perl gilt das analog, allerdings ist es verbreiterer als Kommandozeilenversion und auf vielen Unix-artigen Linux-System installiert.

http://www.perl.com
http://www.activestate.com (Perl für Windows)

Aufruf im Browser nach lokaler Installtion per http://localhost , nicht als Datei…

Die Funktion Implode ist auch nur als Arrayfunktion
deklariert, da wäre ich nicht spontan auf das herunterladen
einer Seite gekommen…

Herunterladen tut auch file, und gibt ein array der einzelnen Zeilen zurück, die mit implode wieder zu einem einzigen String zusammengehängt werden.
Bei neuerem PHP tut es stattdessen auch file_get_contents.

Alexander

1 Like