Obtención de archivos, todos a la vez, desde una página web utilizando curl

74

Me gustaría descargar los archivos, todos a la vez, desde la siguiente página usando curl : enlace

Probé curl http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ y devolví un montón de líneas en el terminal, pero no obtuve ningún archivo.

    
pregunta Thi G. 31.08.2013 - 15:20

5 respuestas

110

Utiliza wget en su lugar. Puede instalarlo con brew install wget si ha instalado Homebrew o sudo port install wget si ha instalado MacPorts.

Para descargar archivos de una lista de directorios, use -r (recursivo), -np (no siga los enlaces a los directorios principales) y -k para que los enlaces en HTML o CSS descargados apunten a archivos locales ( crédito @xaccrocheur).

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Otras opciones útiles:

  • -nd (sin directorios): descargue todos los archivos al directorio actual
  • -e robots.off : ignore los archivos robots.txt, no descargue los archivos robots.txt
  • -A png,jpg : acepta solo archivos con las extensiones png o jpg
  • -m (espejo): -r --timestamping --level inf --no-remove-listing
  • -nc , --no-clobber : omitir la descarga si existen archivos
respondido por el user495470 31.08.2013 - 15:56
20

curl solo puede leer archivos de páginas web individuales, el grupo de líneas que obtuvo es en realidad el índice del directorio (que también ve en su navegador si va a esa URL). Para usar curl y algunas herramientas mágicas de Unix para obtener los archivos, podrías usar algo como

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

que obtendrá todos los archivos en el directorio actual.

Para necesidades más elaboradas (incluyendo obtener un montón de archivos de un sitio con carpetas / directorios), wget (como se propone en otra respuesta) es la mejor opción.

    
respondido por el nohillside 31.08.2013 - 16:09
4

Ref: enlace

Puedes usar el siguiente comando:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

Explicación con cada opción

  • wget : comando simple para hacer una solicitud CURL y descargar archivos remotos a nuestra máquina local.
  • --execute="robots = off" : esto ignorará el archivo robots.txt mientras se rastrea a través de las páginas. Es útil si no obtiene todos los archivos.
  • --mirror : esta opción básicamente reflejará la estructura del directorio para la URL dada. Es un atajo para -N -r -l inf --no-remove-listing que significa:
    • -N : no recupere archivos a menos que sea más reciente que local
    • -r : especifique descarga recursiva
    • -l inf : profundidad máxima de recursión (inf o 0 para infinito)
    • --no-remove-listing : no elimine los archivos '.listing'
  • --convert-links : haga que los enlaces en HTML o CSS descargados apunten a archivos locales
  • --no-parent : no ascienda al directorio principal
  • --wait=5 : espere 5 segundos entre recuperaciones. Para que no sacudamos el servidor.
  • <website-url> : esta es la url del sitio web desde donde descargar los archivos.

Feliz descarga: smiley:

    
respondido por el Udit Desai 19.06.2016 - 06:22
2

Puede utilizar httrack disponible para Windows / MacOS e instalable a través de Homebrew.

    
respondido por el user242053 18.06.2017 - 15:08
0

Para aquellos de nosotros que preferiríamos usar una aplicación con una GUI, existe el programa de software de bajo costo DeepVacuum para Mac OS X , que implementa wget de una manera fácil de usar, con una lista de ajustes preestablecidos que pueden manejar las tareas más comunes. También puede guardar sus propias configuraciones personalizadas como ajustes preestablecidos.

    
respondido por el user9290 15.02.2014 - 17:05

Lea otras preguntas en las etiquetas