Obtener todos los archivos de una página web usando curl


Respuestas:


125

Usar en su wgetlugar. Puede instalarlo brew install wgetsi ha instalado Homebrew o sudo port install wgetsi ha instalado MacPorts.

Para descargar archivos de una lista de directorios, use -r(recursivo), -np(no siga los enlaces a los directorios principales) y -khaga que los enlaces descargados en HTML o CSS 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 pngojpg
  • -m (espejo): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Omitir descarga si existen archivos

3
wget -r -np -k http://your.website.com/specific/directory. El truco es utilizar -kpara convertir los enlaces (imágenes, etc.) para la visualización local.
yPhil

brewy portno funciona para mí instalar wget. ¿Qué tengo que hacer?
Hoseyn Heydari

@HoseynHeydari: puede usar rudix.org para compilar binarios para osx. entonces necesita instalar rudix y luego usar: sudo rudix install wget
Mamonu

La opción -kno siempre funciona. Por ejemplo, si tiene dos enlaces que apuntan al mismo archivo en la página web que está tratando de capturar de forma recursiva, wgetsolo parece convertir el enlace de la primera instancia pero no la segunda.
Kun

22

curlsolo puede leer archivos de páginas web individuales, el montón de líneas que obtuvo es en realidad el índice del directorio (que también puede ver en su navegador si accede a esa URL). Para usar curly algunas herramientas mágicas de Unix para obtener los archivos, podría 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 llevará todos los archivos al directorio actual.

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


Gracias. ¡Esta es una buena solución y proporcionar un ejemplo práctico es excelente!
egelev

1
xmllint --html --xpath '//a/@href'es probablemente un mejor analizador que grep.
ceving

8

Ref: http://blog.incognitech.in/download-files-from-apache-server-listing-directory/

Puede 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 rastrea páginas. Es útil si no obtiene todos los archivos.
  • --mirror: Esta opción básicamente reflejará la estructura de directorios para la URL dada. Es un atajo -N -r -l inf --no-remove-listingque significa:
    • -N: no vuelva a recuperar archivos a menos que sea más reciente que local
    • -r: especificar 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: hacer que los enlaces en HTML o CSS descargados apunten a archivos locales
  • --no-parent: no ascienda al directorio padre
  • --wait=5: espere 5 segundos entre recuperaciones. Para que no destruyamos el servidor.
  • <website-url>: Esta es la url del sitio web desde donde descargar los archivos.

Descarga feliz: smiley:


3

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


algo nuevo para mi, gracias. Lo mejor es que es rápido y rápido: una línea. simplemente corte la grasa y evite toda la basura.
Peter Teoh,

0

Para aquellos de nosotros que preferiríamos usar una aplicación con una GUI, existe el programa shareware de bajo costo DeepVacuum para Mac OS X , que se implementa wgetde una manera fácil de usar, con una lista de ajustes preestablecidos que pueden manejar tareas comúnmente necesarias. También puede guardar sus propias configuraciones personalizadas como preajustes.

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.