Foros del Web » Programación para mayores de 30 ;) » Programación General »

links de un documento

Estas en el tema de links de un documento en el foro de Programación General en Foros del Web. Hola a todos.. Necesito averiguar por medio de perl los links existentes en un documento... como puedo hacer esto......
  #1 (permalink)  
Antiguo 21/09/2005, 16:17
 
Fecha de Ingreso: mayo-2004
Ubicación: Manizales-Colombia
Mensajes: 97
Antigüedad: 20 años
Puntos: 0
links de un documento

Hola a todos..

Necesito averiguar por medio de perl los links existentes en un documento...
como puedo hacer esto...
__________________
La vida es el presente, pero para
trabajar en su futuro... :cool:

Suerte y Pulso.... :cool:
  #2 (permalink)  
Antiguo 21/09/2005, 18:57
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 22/09/2005, 18:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:45.