Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/09/2005, 18:11
kidd
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años, 9 meses
Puntos: 0
Cita:
Iniciado por monoswim
Sería algo así...(Lo escribo de memoria, puede tener errores)
Código:
#abrimos el documento
open(FILE,"<pag.html");
while (my $line = <FILE>){       #ANALIZAMOS CADA LINEA DEL SCRIPT
   my (@links) = $line =~ /href\=\"(.*?)\"/;        #CARGAMOS EN @LINKS el contenido de los href
   print join("<br>", @links);         #imprimimos los links que se cargaron separados de un br
}
close (FILE);
Lo escribí mientras te respondía, no lo probé...Hacelo vos...jeje

Saludos

Uhm, aunque te puede funcionar, en muchos casos no vas a tener los resultados deseados, por ejemplo te vas a meter en serios problemas si el documento tiene URLs relativos.

En el siguiente código pones el URL del cual quieres leer las ligas y te las imprime, todas las ligas relativas las convierte a absolutas:

Código:
#!/usr/bin/perl

use warnings;
use strict;
use HTML::LinkExtor;
use URI::URL;
use LWP::UserAgent;
use HTTP::Request;

my @href = ();


#URL DEL CUAL QUEREMOS LAS LIGAS
my $URL = "http://www.yahoo.com/";


#CONSEGUIMOS LAS LIGAS
my @links = leer_ligas($URL);


#AHORA LAS IMPRIMIMOS
print "$_\n" foreach @links;





#FUNCIÓN CON TODA LA MAGIA
sub leer_ligas{

my $url = shift;

my $ua = LWP::UserAgent->new;

  sub callback {
     my($tag, %attr) = @_;
     return if $tag ne 'a';
     push(@href, values %attr);
  }

  # Make the parser.  Unfortunately, we don't know the base yet
  # (it might be diffent from $url)
  my $p = HTML::LinkExtor->new(\&callback);

  # Request document and parse it as it arrives
  my $res = $ua->request(HTTP::Request->new(GET => $url),
                      sub {$p->parse($_[0])});

  my $base = $res->base;

return(map { $_ = url($_, $base)->abs; } @href);

}


SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.