• Publicidad

Ayuda con WWW::Mechanize

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

Ayuda con WWW::Mechanize

Notapor xxfabianxx » 2010-05-11 09:19 @430

Hola a todos. Bueno, soy principiante en Perl y estoy tratando de hacer un código que me extraiga todas la imágenes de cualquier página web. La idea es poder clasificarlas por tipo (jpg, png, etc) Solo lo estoy haciendo para poder practicar. He estado usando WWW::Mechanize pero no entiendo su funcionamiento. Estoy usando el $mech->images que se supone lee todas las imágenes de la página... pero no sé cómo rescatarlas... si alguien pudiera orientarme...


Gracias.
xxfabianxx
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-05-11 09:10 @424

Publicidad

Re: Ayuda con WWW::Mechanize

Notapor marcmb » 2010-05-11 09:47 @449

Me he estado mirando el tutorial de WWW::Mechanize y lo que hace $mech->images es listarte todas las imágenes de la página, para buscar imágenes hay $mech->find_image() , te recomiendo que te pases a ver el tutorial en: http://search.cpan.org/~petdance/WWW-Me ... chanize.pm
Avatar de Usuario
marcmb
Perlero nuevo
Perlero nuevo
 
Mensajes: 55
Registrado: 2010-05-03 07:42 @362
Ubicación: Girona

Re: Ayuda con WWW::Mechanize

Notapor explorer » 2010-05-11 09:58 @457

Bienvenido a los foros de Perl en Español, xxfabianxx.

El método images() devuelve una lista con las imágenes encontradas en el HTML. Cada elemento de la lista es un objeto del tipo WWW::Mechanize::Image. Dos de los métodos de estos objetos es base() y name(), que devuelven la URL y el nombre de la imagen (si la imagen tiene nombre, realmente).

Solo tienes que hacer un bucle para guardar a disco todas las imágenes, con la ayuda de mirror() (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use File::Basename;

for my $imagen ($mech->images()) {
    my $url = $imagen->base();
    $mech->mirror($url, basename $url);
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

(basado en el último ejemplo de WWW::Mechanize::Examples)
Usamos basename() para extraer el nombre del fichero, desde la URL.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con WWW::Mechanize

Notapor xxfabianxx » 2010-05-11 17:33 @773

Se agradece... Ahora, si no fuera mucha la molestia, ¿cómo puedo guardar esas imágenes en la carpeta que yo quiera? He hecho algo con mkdir() pero no sé cómo dejar las imágenes dentro... Gracias... Reitero que soy principiante...
xxfabianxx
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-05-11 09:10 @424

Re: Ayuda con WWW::Mechanize

Notapor explorer » 2010-05-11 17:49 @784

Lo que puedes hacer es meterte en ese directorio, antes de bajarlas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
chdir($directorio);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y luego ya viene el bucle del mirror(), que colocará las imágenes en ese directorio.

Otra forma distinta, es agregando el $directorio en el nombre del fichero destino donde se guardarán las imágenes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $url_imagen = $imagen->base();
my $fichero    = basename $url_imagen;
$mech->mirror($url, "$directorio/$fichero");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con WWW::Mechanize

Notapor xxfabianxx » 2010-05-17 17:33 @773

Gracias, he entendido de maravilla esto... les agradezco mucho... muy bueno el foro...
xxfabianxx
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-05-11 09:10 @424


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron