• Publicidad

Perl Web Crawler

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

Perl Web Crawler

Notapor seguridadenmimail » 2011-08-30 19:32 @855

Soy nuevo en el foro, estuve buscando información relacionada en el foro y vi que hay varios posts pero quería consultarles sobre un script que encontré en Internet.

En el sitio:
http://www.dreamincode.net/forums/topic ... b-crawler/

Encontré el siguiente script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2. use HTML::LinkExtor;
  3. my @urls = ('http://www.misitio.com.ar/index.html');
  4. my %visited;  # The % sigil indicates it's a hash
  5. my $browser = LWP::UserAgent->new();
  6. $browser->timeout(5);
  7.  
  8. while (@urls) {
  9.   my $url = shift @urls;
  10.  
  11.   # Skip this URL and go on to the next one if we've
  12.   # seen it before
  13.   next if $visited{$url};
  14.  
  15.   my $request = HTTP::Request->new(GET => $url);
  16.   my $response = $browser->request($request);
  17.  
  18.   # No real need to invoke printf if we're not doing
  19.   # any formatting
  20.   if ($response->is_error()) {print $response->status_line, "\n";}
  21.   my $contents = $response->content();
  22.  
  23.   # Now that we've got the url's content, mark it as
  24.   # visited
  25.   $visited{$url} = 1;
  26.  
  27.   my ($page_parser) = HTML::LinkExtor->new(undef, $url);
  28.   $page_parser->parse($contents)->eof;
  29.   my @links = $page_parser->links;
  30.  
  31.   foreach my $link (@links) {
  32.         print "$$link[2]\n";
  33.         push @urls, $$link[2];
  34.   }
  35.   sleep 1;
  36. }
  37.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Me anda muy bien, pero mi idea es que solamente muestre los link que tengan relación a mi sitio web (http://www.misitio.com.ar) y no a otros.

¿Alguien me puede ayudar?

Muchas Gracias.
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853

Publicidad

Re: Perl Web Crawler

Notapor explorer » 2011-08-31 06:13 @300

Bienvenido a los foros de Perl en español, seguridadenmimail.

Lo que puedes hacer es meter una instrucción next dentro del último bucle for(), entre la línea 31 y 32.

Algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         next if $link !~ /www[.]misitio[.]com[.]ar/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo que hace es "salta a la siguiente vuelta si el $link no es algo parecido a www.misitio.com.ar".

En CPAN, en la distribución WWW::CheckSite tienes un script que hace una comprobación de un sitio web completo.
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: Perl Web Crawler

Notapor seguridadenmimail » 2011-08-31 07:34 @357

Explorer,
Muchas gracias por la ayuda, estoy testeando y no me funciona.
Podrías ayudarme un poco más.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $link (@links) {
  2.   next if $link !~ /www[.]misitio[.]com[.]ar/;
  3.   print "$$link[2]\n";
  4.         push @urls, $$link[2];
  5.   }
  6.   sleep 1;
  7. }
  8.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Muchas Gracias.
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853

Re: Perl Web Crawler

Notapor explorer » 2011-08-31 07:40 @361

Tienes razón, estaba mal. Prueba con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         next if $$link[2] !~ /www[.]misitio[.]com[.]ar/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

quizás quede más claro así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         next if $link->[2] !~ /www[.]misitio[.]com[.]ar/;
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Perl Web Crawler

Notapor seguridadenmimail » 2011-08-31 07:53 @370

Muchas Gracias.
Saludos.
seguridadenmimail
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2011-08-30 19:28 @853


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 2 invitados