¿Cómo automatizar la descarga de archivos?

¿Cómo automatizar la descarga de archivos?

Obtuve un libro que tenía un pase para acceder a versiones digitales de escaneos de alta resolución de gran parte del arte del libro. ¡Asombroso! Lamentablemente la presentación de todas ellas son 177 páginas de 8 imágenes cada una con enlaces a archivos zip de jpg. Es extremadamente tedioso navegar y me encantaría poder obtener todos los archivos a la vez en lugar de sentarme y hacer clic en cada uno por separado.

archive_bookname/index.1.htm - archive_bookname/index.177.htm cada una de esas páginas tiene 8 enlaces a los archivos

vinculando a archivos como <snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, <snip>/downloads/_Q6Q5354.jpg.zip. eso no va del todo en orden. No puedo obtener una lista del directorio de la /downloads/carpeta principal.

Además, el archivo está detrás de un muro de inicio de sesión, por lo que utilizar una herramienta que no sea un navegador puede resultar difícil sin saber cómo recrear la información de la sesión.

He investigado un poco wget pero estoy bastante confundido y no tengo idea si me ayudará con esto. ¿Algún consejo sobre cómo abordar esto? ¿Wget puede hacer esto por mí automáticamente?

Respuesta1

Puede especificar un archivo html de entrada con

wget -F -i <file>

por lo que podrías simplemente volcar los archivos html y recorrerlos
(agregué una URL base para enlaces relativos):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

alternativamente

puedes simplemente volcar los enlaces a un archivo (separados por nuevas líneas) mediante cualquier método y hacer esto:

wget -i <url-file>

una buena forma de acceder a esos enlaces sería:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

posiblemente en un bucle for que se agrega al 'archivo URL'

Respuesta2

Usar Python podría ser más fácil. Entonces esta es una solución que usa Python. Si Python no es una opción para usted, ignórelo. :)

Supongo que raspar el sitio web es legal.

Escriba un script de Python simple para recorrerlo archive_bookname/index.1-177.htmy deséchelo usandohermosasopa, ubique los enlaces con selectores de clases CSS o con una simple coincidencia de expresiones regulares, luego useurllib.urlretrieve()para obtener los archivos. Así es como lo haría.

Respuesta3

O simplemente puedes usar Perl y su brillante módulo llamado www::mechanize. Es realmente sencillo armar algo y hay toneladas de ejemplos en la documentación oficial de CPAN.

información relacionada