Je n'ai trouvé que puf (récupérateur d'URL parallèle) mais je n'ai pas pu le faire lire les URL d'un fichier; quelque chose comme
puf < urls.txt
ne fonctionne pas non plus.
Le système d'exploitation installé sur le serveur est Ubuntu.
Je n'ai trouvé que puf (récupérateur d'URL parallèle) mais je n'ai pas pu le faire lire les URL d'un fichier; quelque chose comme
puf < urls.txt
ne fonctionne pas non plus.
Le système d'exploitation installé sur le serveur est Ubuntu.
Réponses:
En utilisant GNU Parallel ,
$ parallel -j $ {jobs} wget <urls.txt
ou xargsde GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
où ${jobs}est le nombre maximum de wgetvous voulez permettre d'exécuter simultanément (mise -nà 1obtenir un wgetappel par ligne urls.txt). Sans -j/ -P, parallelexécutera autant de tâches à la fois que de cœurs de processeur (ce qui n'a pas nécessairement de sens pour wgetlié par les E / S réseau), et xargss'exécutera une à la fois.
Une fonctionnalité intéressante qui parallela dépassé le xargsfait de garder la sortie des travaux exécutés simultanément séparés, mais si vous ne vous en souciez pas, elle xargsest plus susceptible d'être préinstallée.
jobsdépend de nombreux facteurs: latence du chemin, bande passante du chemin, politiques du serveur distant, etc.
aria2 fait cela.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Exemple: aria2c http://example.org/mylinux.iso
Vous pouvez l'implémenter en utilisant Python et la bibliothèque pycurl. La bibliothèque pycurl possède l'interface "multi" qui implémente sa propre boucle paire qui permet plusieurs connexions simultanées.
Cependant, l'interface est plutôt semblable à C et donc un peu lourde par rapport à d'autres codes, plus "Pythonic".
J'ai écrit un wrapper pour cela qui construit un client de type navigateur plus complet par-dessus. Vous pouvez utiliser cela comme exemple. Voir le module pycopia.WWW.client . HTTPConnectionManager encapsule la multi-interface.
Une partie de la page de manuel de GNU Parallel contient un exemple de wget récursif parallèle.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
Le HTML est téléchargé deux fois: une fois pour l'extraction des liens et une fois pour le téléchargement sur le disque. Les autres contenus ne sont téléchargés qu'une seule fois.
Si vous n'avez pas besoin de la réponse récursive, l'éphémient semble évident.
Les victimes de votre téléchargement parallèle ne seront pas amusées: elles s'attendent à ce qu'une connexion serve chaque client, la configuration de plusieurs connexions signifie moins de clients dans l'ensemble. (C'est à dire, cela est considéré comme un comportement grossier).