Ich habe nur puf (Parallel URL fetcher) gefunden, aber ich konnte es nicht dazu bringen, URLs aus einer Datei zu lesen; so etwas wie
puf < urls.txt
geht auch nicht.
Das auf dem Server installierte Betriebssystem ist Ubuntu.
Antwort1
Verwenden vonGNU Parallel,
$ parallel -j${jobs}wget < urls.txt
oder xargs
vonGNU Findutils,
$ xargs -n 1 -P${jobs}wget < urls.txt
wobei ${jobs}
die maximale Anzahl von ist, die gleichzeitig wget
ausgeführt werden soll (setzen Sie auf , -n
um 1
einen wget
Aufruf pro Zeile in zu erhalten urls.txt
). Ohne -j
/ werden so viele Jobs gleichzeitig ausgeführt, wie CPU-Kerne vorhanden sind (was bei gebundener Netzwerk-E/A nicht unbedingt sinnvoll ist ) und immer einer nach dem anderen.-P
parallel
wget
xargs
Eine nette Funktion parallel
besteht xargs
darin, die Ausgabe gleichzeitig laufender Jobs getrennt zu halten. Wenn Ihnen das jedoch egal ist, xargs
ist es wahrscheinlicher, dass es vorinstalliert ist.
Antwort2
aria2 macht das.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Beispiel: aria2chttp://example.org/mylinux.iso
Antwort3
Sie können dies mit Python und der pycurl-Bibliothek implementieren. Die pycurl-Bibliothek verfügt über die Schnittstelle „multi“, die eine eigene Even-Schleife implementiert, die mehrere gleichzeitige Verbindungen ermöglicht.
Allerdings ähnelt die Schnittstelle eher C und ist daher im Vergleich zu anderem, eher „pythonischem“ Code etwas umständlich.
Ich habe einen Wrapper dafür geschrieben, der einen vollständigeren browserähnlichen Client darauf aufbaut. Sie können das als Beispiel verwenden. Siehe diepycopia.WWW.clientModul. Der HTTPConnectionManager umschließt die Multischnittstelle.
Antwort4
Ein Teil der Manpage von GNU Parallel enthält ein Beispiel für ein paralleles rekursives wget.
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
HTML wird zweimal heruntergeladen: Einmal zum Extrahieren von Links und einmal zum Herunterladen auf die Festplatte. Andere Inhalte werden nur einmal heruntergeladen.
Wenn Sie die Rekursivität nicht benötigen, scheint die Antwort von Ephemient offensichtlich.