• Publicidad

Cómo descargar de una URL un archivo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cómo descargar de una URL un archivo

Notapor heguirola » 2012-05-24 23:16 @011

Hola, me hace falta descargar desde una URL.

Ejemplo: http://repositorio_institucional.uci.cu/jspui/bitstream/ident/TD_04668_11/1/TD_04668_11.pdf

El archivo digital "TD_04668_11.pdf"

Esto lo hecho en Perl, pero usando:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. # $url1 = http://repositorio_institucional.uci.cu/jspui/bitstream/ident/TD_04668_11/1/TD_04668_11.pdf
  3.  
  4. my @URLS = ($url1,$url2,$url3,$url4,..);
  5.  
  6. foreach my $url (@URLS) {
  7.     system("wget -t 1 -T 1 $url &");
  8. }
  9.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que me pasa es que cuando son muchas URL, me carga mucho el servidor haciendo las peticiones y no descarga completamente los archivos. ¿Hay algún módulo de Perl que gestione todo esto?... Que alguien diga con urgencia...
heguirola
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-05-09 10:32 @480

Publicidad

Re: Cómo descargar de una URL un archivo

Notapor explorer » 2012-05-25 05:04 @252

El problema es el '&', que manda ejecutar todos los wget en paralelo, y eso puede agotar el número de conexiones disponibles por el servidor web.

Mejor usar algo más sencillo, quizás:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use LWP::Simple;
  3.  
  4. my @URLS =
  5.     (
  6.     'http://repositorio_institucional.uci.cu/jspui/bitstream/ident/TD_04668_11/1/TD_04668_11.pdf',
  7.     );
  8.  
  9. for my $url (@URLS) {
  10.     my($archivo_local) = $url =~ m/(\w+[.]\w+)$/;   # extraer el nombre del archivo
  11.     mirror($url, $archivo_local);
  12. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En la página de manual de LWP::Simple tiene algún ejemplo y función más.

Si necesitas/puedes descargar archivos de forma paralela para aumentar la velocidad de toda la descarga, puedes usar Parallel::Downloader, aunque es un poco más complicado de usar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo descargar de una URL un archivo

Notapor heguirola » 2012-05-25 09:01 @417

Gracias, usted es un genio. Me ha servido perfectamente. Lo último que me hace falta es que me lo guarde en una dirección que yo le especifique y no en la carpeta donde se ejecuta el script.
heguirola
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-05-09 10:32 @480

Re: Cómo descargar de una URL un archivo

Notapor explorer » 2012-05-25 09:21 @431

Pues puedes usar chdir(), o indicar la ruta completa en el escalar $archivo_local.

Más información en perldoc -f chdir .
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo descargar de una URL un archivo

Notapor heguirola » 2012-05-25 09:41 @445

Lo hice con un chdir(); y hasta el momento está trabajando... ¿hay otra vía para saber como cultura general?
heguirola
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-05-09 10:32 @480


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados

cron