Solo encontré puf (recolector de URL paralelo) pero no pude lograr que leyera las URL de un archivo; algo como
puf < urls.txt
tampoco funciona.
El sistema operativo instalado en el servidor es Ubuntu.
Respuesta1
UsandoParalelo GNU,
$ paralelo -j${trabajos}wget <urls.txt
o xargs
deUtilidades de búsqueda de GNU,
$ xargs -n 1 -P${trabajos}wget <urls.txt
¿Dónde ${jobs}
está el número máximo de wget
elementos que desea permitir que se ejecuten simultáneamente (configurando -n
para 1
obtener una wget
invocación por línea urls.txt
)? Sin -j
/ -P
, parallel
ejecutará tantos trabajos a la vez como núcleos de CPU (lo que no necesariamente tiene sentido para wget
estar vinculados a la red IO) y xargs
se ejecutará uno a la vez.
Una característica interesante que parallel
ha terminado xargs
es mantener separada la salida de los trabajos que se ejecutan simultáneamente, pero si eso no le importa, xargs
es más probable que esté preinstalado.
Respuesta2
aria2 hace esto.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Ejemplo: aria2chttp://example.org/mylinux.iso
Respuesta3
Puedes implementar eso usando Python y la biblioteca pycurl. La biblioteca pycurl tiene la interfaz "multi" que implementa su propio bucle uniforme que permite múltiples conexiones simultáneas.
Sin embargo, la interfaz es más bien tipo C y, por lo tanto, un poco engorrosa en comparación con otros códigos más "Pythonic".
Escribí un contenedor que crea un cliente similar a un navegador más completo encima. Puedes usar eso como ejemplo. Ver elpycopia.WWW.clientemódulo. HTTPConnectionManager envuelve la interfaz múltiple.
Respuesta4
Parte de la página de manual de GNU Parallel contiene un ejemplo de un wget recursivo paralelo.
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
HTML se descarga dos veces: una para extraer enlaces y otra para descargar al disco. El resto del contenido solo se descarga una vez.
Si no necesita la respuesta del efeminismo de recursividad parece obvia.