#!/usr/bin/perl
use IO::Socket;
#analyzer, extrae los enlaces de una pagina web determinada
unless (@ARGV > 1) { die "Uso: $0 host documento" }
$host = shift(@ARGV);
foreach $document ( @ARGV ) {
$remote = IO::Socket::INET->new(Proto => "tcp", PeerAddr => $host, PeerPort => "http(80)");
unless ($remote) { die "No se puede conectar a $host" }
$remote->autoflush(1);
print $remote "GET $document HTTP/1.0\n\n";
push(@respuesta, <$remote>);
while (<$remote>) {push(@respuesta,<$remote>);}
$texto = join(" ",@respuesta);
#Extrae los enlaces
while ($texto=~/(href=)([^>]+)>/g){
$dir=$2;
#Elimina las comillas y limpia algunas direcciones
if($dir=~/\"([\s\S]+)\"[\s\S]*/){
$dir_limpia=$1;
#Elimina los enlaces que no empiecen por http o https
if($dir_limpia=~/^http/ or $dir_limpia=~/^https/){
print "$dir_limpia\n";
}
}
}
close $remote;
}
No tiene mucha utilidad por si solo, pero puede integrarse en programas más grandes, un ejemplo de funcionamiento, si ejecutamos: ./analyzer.pl google.es "/search?hl=es&q=javiyu&btnG=Buscar+con+Google&meta="
Obtendremos como salida los enlaces de la búsqueda en google.
...
http://javiyu.blogspot.com/
http://216.239.59.104/search?q=cache:Ai8OiBXDTQEJ:javiyu.blogspot.com/+javiyu&hl=es&ct=clnk&cd=4&ie=UTF-8
http://javiyu.blogspot.com/search/label/redes
...
0 comentarios:
Publicar un comentario