
Mi acceso al directorio mysite.com/img/ está bloqueado.
Sin embargo, todas las imágenes en ese directorio están en la forma n.jpg
donde n es la enésima imagen.
Mi acceso a mysite.com/img/n.jpg
no está bloqueado
¿Hay alguna forma de guardar las imágenes 1-500 ( mysite.com/img/1.jpg
a mysite.com/img/500.jpg
)?
Estoy usando ubuntu 11.10
Respuesta1
La solución más sencilla probablemente sea utilizar expansiones de llaves bash
wget http://mysite.com/img/{1..500}.jpg
También existe la opción de hacer un bucle, lo que le permite esperar un poco entre cada solicitud.
for n in $(seq 1 500); do
wget http://mysite.com/img/${n}.jpg
sleep 0.1
done
(Lo anterior se puede ejecutar directamente en el shell).
Respuesta2
También hay otra forma de hacer esto wget
que he usado exitosamente para un sitio, y debería poder modificar las instrucciones a continuación para otros sitios. Implica generar una lista de URL y luego enviar esa lista a wget
.
1) Como ejemplo, digamos que desea descargar las 63 revistas en formato PDF deRevista Círculo Completo(una revista de Ubuntu), pero su administrador de descargas no puede descargarlos todos a la vez. Así que encuentra elenlacedel primer archivo pdf y verifique rápidamente que los otros enlaces de revistas estén en el mismo formato de URL.
2) Con el conocimiento adquirido en la parte 1, ahora podemos recurrir a nuestro script para generar las URL. El siguiente script ejecuta un bucle hasta, que he modificado (crédito a su autor). Modifica este script colocando el número de revistas en la until [ $i = 63 ]
parte y colocando la URL correcta después echo
y asegurándose de que "$i"
esté en la parte correcta de la URL que se repetirá para que cambie con cada ejecución del bucle. Las URL se generan y luego se agregan a un archivo de texto; esto sucede en una fracción de segundo cuando se ejecuta el script y no es tan complicado de configurar como parece.
Guarde el script en un editor de texto, hágalo ejecutable y ejecútelo; modifíquelo como se describe arriba cuando desee descargar desde undiferentesitio que mi ejemplo.
#!/bin/bash
i=0
until [ $i = 63 ] ; do
i=$(($i+1))
echo "http://dl.fullcirclemagazine.org/issue"$i"_en.pdf" >> url.txt
done
3) Finalmente, asumiendo que url.txt
está en el directorio de trabajo actual, ejecute:
wget -i url.txt
Si desea guardar las descargas en otro lugar, agregue -P ~/MyDirectory
despuésurl.txt
Funciona: si lo pruebas, ingresa ctrl c
para cancelar si no deseas descargarlos todos.