Ich lade einige Messungen mit wget herunter, die in Form von
http://www.somewhere.com/sub-somewhere052/image0001.jpg
http://www.somewhere.com/sub-somewhere052/file0001.txt
bis zu
http://www.somewhere.com/sub-somewhere052/image0099.jpg
http://www.somewhere.com/sub-somewhere052/file0099.txt
Das Problem ist, dass sich diese beiden Nummern von Test zu Test ändern (das war Test 052 ) und jeder Test eine unbekannte (mir im Voraus bekannte) Anzahl von Dateien hat. Sie werden jedoch alle gleich genannt (sie werden natürlich nicht irgendwo genannt ) und das ist bekannt.
Wie kann ich wget dazu bringen, sub-somewhere001 / image0001.jpg bis imagexxxx.jpg "durchzugehen" (wobei xxxx unbekannt ist), bis es die eine Datei erreicht, die nicht mehr existiert, und dann zu (nach filexxxx.txt's) zu gehen ) nach irgendwo002 / ... und so weiter?
Kurz gesagt, wie gehe ich mit der Situation um, dass nichts mehr da ist?
windows-xp
wget
Turm
quelle
quelle
Antworten:
Daran
man wget
können Sie erkennen, dass die übliche Unix-Rückgabewertkonvention verwendet wird - 0 bedeutet keinen Fehler, alles andere ist ein Fehler. Vorausgesetzt, Sie erwarten keine anderen Arten von Fehlern (z. B. Netzwerkfehler oder ähnliches), dh Sie erwarten, dass Sie Folgendes verwenden können, wenn nichts heruntergeladen wird, was bedeutet, dass keine Datei vorhanden ist:Kommentieren Sie die richtige Zeile in
get_all
Funktion. Derzeit wird es simuliert und die Ausgabe sieht folgendermaßen aus (vorausgesetzt, Sie haben das oben Gesagte in gespeichertmkt.sh
):Hinweis: Ich habe das nicht getestet
wget
, aber Sie können dies verwenden, um einige Dateien zu testen:Ersetzen Sie einfach
$tp
,$fp
,$inf
und$ext
nach Bedarf, zB für ähnliches Beispiel zu dem, was Sie haben:Dies sollte
8
für 404 aus dem Echoman wget
:Wenn dies funktioniert, sollte das Skript funktionieren und hoffen, dass in dieser einen Zeile keine Tippfehler enthalten sind. :)
quelle
Wenn die Site eine
404
Antwort zurückgibt ,wget
wird die$?
Variable auf einen Wert ungleich Null gesetzt (insbesondere 8, aber wen interessiert das?). Das können Sie testen.Ich finde bash ziemlich verwirrend, also hier ist eine in Python (2.7.2). Es sollte funktionieren, aber ich kann nicht direkt ohne eine handliche Website testen. Dies hängt davon ab, ob der Server eine ordnungsgemäße 404-Antwort zurückgibt.
Es sollte auch unter Windows einwandfrei laufen (einfach loswerden
#! /usr/bin/python
und als.py
Datei speichern, obwohl ein Python-Interpreter installiert sein muss)quelle