Mir ist wget -i
eine Möglichkeit bekannt, eine Liste von URLs herunterzuladen. Das einzige Problem ist, dass ich jedem unterschiedliche POST-Daten übergeben muss, was für einzelne URLs funktioniert, wget --post-data=
jedoch nicht für Listen.
Ich bin offen für jeden CLI-Downloader oder sogar für etwas in JS oder Python. Ich möchte jedoch entweder einen Fortschrittsbalken für jeden Download oder eine Protokolldatei erhalten, die jedes Mal aktualisiert wird, wenn eine dl beendet wird, oder eine andere Methode, um zu wissen, wann eine dl beendet ist.
Antworten:
Wenn Sie bereits eine Liste mit URLs haben, fügen Sie einfach die POST-Daten zu dieser Liste hinzu. Etwas wie:
-i
Lesen Sie dann statt zu verwenden die Datei in einer Bash-Schleife und übergeben Sie die Daten an wget:Verwenden Sie
&
anstelle von, um sie parallel auszuführen, sodass mehrere Dateien gleichzeitig heruntergeladen werden;
. Vorsicht, dies startet einen separatenwget
Prozess für jede URL.Ein Trick, den ich zum Starten dieser Art von Dingen verwende, besteht darin, zu verfolgen, wie viele derzeit ausgeführt werden, und den nächsten nur auszuführen, wenn die Anzahl unter einem Schwellenwert liegt, z. B. 10:
Dadurch werden die ersten 10 URLs gestartet. Warten Sie dann, bis eine abgeschlossen ist, und starten Sie die nächste.
quelle
Sie können eine durch CSV getrennte Datei wie in diesem Format definieren (zum Beispiel):
und analysieren Sie es mit einem
awk
Befehl:quelle
Ich habe dieses Tool noch nicht verwendet, dachte aber, ich würde es hinzufügen, da es genau so klingt, wie Sie es suchen.
du bekommst
Es ist ein GUI-Tool namens
Screenshotsuget
. Es kann eine Eingabedatei verwenden, die die herunterzuladenden URLs zusammen mit HTTP-POST-Daten aus einer zweiten Datei enthält. Es ist unklar, ob Sie auf diese Weise unterschiedliche POST-Daten pro URL verwenden können oder ob es sich nur um einen einzigen Satz für alle URLs handelt, der jedoch einen genaueren Blick wert sein könnte.quelle