¿Cómo uso Wget para descargar todas las imágenes en una sola carpeta, desde una URL?

133

Estoy usando wget para descargar todas las imágenes de un sitio web y funciona bien, pero almacena la jerarquía original del sitio con todas las subcarpetas y, por lo tanto, las imágenes están salpicadas. ¿Hay alguna manera de que solo descargue todas las imágenes en una sola carpeta? La sintaxis que estoy usando en este momento es:

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
geoffs3310
fuente

Respuestas:

194

Prueba esto:

wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

Aquí hay más información:

-ndimpide la creación de una jerarquía de directorios (es decir, no hay directorios ).

-rPermite la recuperación recursiva. Consulte Descarga recursiva para obtener más información.

-P establece el prefijo de directorio donde se guardan todos los archivos y directorios.

-Aestablece una lista blanca para recuperar solo ciertos tipos de archivos. Se aceptan cadenas y patrones, y ambos se pueden usar en una lista separada por comas (como se ve arriba). Ver Tipos de archivos para más información.

Jon
fuente
55
Esto en realidad no funcionó para mí. Mi ubicación de guardado fue "." y copió toda la jerarquía del sitio allí.
Buttle Butkus
2
@ButtleButkus Parece que necesita jugar un poco más con la -Aopción de aceptar , consulte la documentación de Wget sobre los tipos de archivos . Además, si está descargando al directorio actual, puede eliminar la -Popción de prefijo de directorio . Si está descargando un solo tipo de archivo, como solo jpg, use algo como wget -r -A.jpg http://www.domain.com. Mire los ejemplos avanzados que proporciona la documentación de Wget.
Jon
Agregar -nd a lo anterior lo hace funcionar. También puede especificar varios indicadores -A como-A "*foo*" -A "*bar*"
Yablargo
1
No olvide usar --level=info --level=9999999999porque wgetes probable que sabotee el trabajo debido al nivel predeterminado de profundidad máxima de recursión de 5.
user619271
127
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
  • -nd: sin directorios (guarda todos los archivos en el directorio actual; -P directorycambia el directorio de destino)
  • -r -l 2: nivel recursivo 2
  • -A: extensiones aceptadas
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
  • -H: abarcan hosts (wget no descarga archivos de diferentes dominios o subdominios de forma predeterminada)
  • -p: requisitos de la página (incluye recursos como imágenes en cada página)
  • -e robots=off: ejecuta el comando robotos=offcomo si fuera parte del .wgetrcarchivo. Esto desactiva la exclusión del robot, lo que significa que ignora robots.txt y las metaetiquetas del robot (debe conocer las implicaciones que esto conlleva, tenga cuidado).

Ejemplo: Obtenga todos los .jpgarchivos de un listado de directorio ejemplar:

$ wget -nd -r -l 1 -A jpg http://example.com/listing/
Lri
fuente
9

Prueba este:

wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com

y espere hasta que elimine toda la información adicional

orezvani
fuente
No está funcionando para mí. wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
Vivo
5

De acuerdo con la página del manual, la bandera -P es:

-P prefijo --directory-prefix = prefijo Establecer prefijo de directorio en prefijo. El prefijo de directorio es el directorio donde se guardarán todos los demás archivos y subdirectorios, es decir, la parte superior del árbol de recuperación. El valor predeterminado es (el directorio actual).

Esto significa que solo especifica el destino, pero dónde guardar el árbol de directorios. No aplana el árbol en un solo directorio . Como se mencionó antes, la bandera -nd realmente hace eso.

@Jon en el futuro sería beneficioso describir qué hace la bandera para que comprendamos cómo funciona algo.

Michael Yagudaev
fuente
2

Las soluciones propuestas son perfectas para descargar las imágenes y si es suficiente para guardar todos los archivos en el directorio que está utilizando. Pero si desea guardar todas las imágenes en un directorio específico sin reproducir todo el árbol jerárquico del sitio, intente agregar "cortar-directorios" a la línea propuesta por Jon.

wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3

en este caso, cut-dirs evitará que wget cree subdirectorios hasta el nivel 3 de profundidad en el árbol jerárquico del sitio web, guardando todos los archivos en el directorio que especificó. Puede agregar más 'cut-dirs' con números más altos si se trata de sitios con una estructura profunda.

hugi coapete
fuente
-7

La utilidad wget recupera archivos de la World Wide Web (WWW) utilizando protocolos ampliamente utilizados como HTTP, HTTPS y FTP. La utilidad Wget es un paquete disponible gratuitamente y la licencia está bajo licencia GNU GPL. Esta utilidad se puede instalar en cualquier sistema operativo tipo Unix, incluidos Windows y MAC OS. Es una herramienta de línea de comandos no interactiva. La característica principal de Wget es su robustez. Está diseñado de tal manera que funciona en conexiones de red lentas o inestables. Wget inicia automáticamente la descarga donde se dejó en caso de problemas de red. También descarga archivos de forma recursiva. Seguirá intentándolo hasta que el archivo se haya recuperado por completo.

Instalar wget en la máquina de Linux sudo apt-get install wget

Cree una carpeta donde desee descargar archivos. sudo mkdir myimages cd myimages

Haga clic derecho en la página web y, por ejemplo, si desea la ubicación de la imagen, haga clic derecho en la imagen y copie la ubicación de la imagen. Si hay varias imágenes, siga lo siguiente:

Si hay 20 imágenes para descargar de la web de una vez, el rango comienza de 0 a 19.

wget http://joindiaspora.com/img {0..19} .jpg

Trupti Kini
fuente
2
Su respuesta explica qué es wget y cómo usarlo para descargar imágenes numeradas secuencialmente ... ninguno de los dos está relacionado con la pregunta original.
Alastair