• Publicidad

Expresión regular para Google

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

Expresión regular para Google

Notapor BigBear » 2011-01-31 20:50 @910

Hola, ando queriendo hacer un script que busque en Google coleccionando todos los enlaces disponibles que encuentre pero el problema es que Google ha modificado su forma de presentar los enlaces y las expresiones regulares conocidas hasta ahora ya no sirven.

He intentando algo como esto pero tiene problemas al sacar los enlaces completos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2. use HTTP::Request::Common;     
  3.  
  4. my $nave = LWP::UserAgent->new();
  5. $nave->timeout(10);
  6. $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
  7.  
  8.  
  9.  
  10. my $re = toma("http://www.google.com/search?sclient=psy&hl=es&rlz=1B2RNFA_enAR279AR401&source=hp&q=regex+google+perl+search&btnG=Buscar");
  11.  
  12. while ($re=~/<cite>(.*?)<\/cite>/g) {
  13. print "$1\n";
  14. }
  15.  
  16.  
  17. sub toma {
  18. return $nave->request (GET $_[0])->content;
  19. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



En Python encontré una expresión que sirve pero no pude traducirla:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
(?<=\"r\"><. href=\")[^\"]+
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿ Alguien puede ayudarme ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Expresión regular para Google

Notapor explorer » 2011-01-31 21:23 @932

En efecto, Google cambia periódicamente sus páginas, e incluso a veces, si detecta que alguien está intentando aprovecharse de ellos, intentará bloquearle.

No conozco Python, pero juraría que está capturando todo lo que está entrecomillado que es precedido por '="r"><. href="' . El '.' dentro del patrón seguramente es para tener en cuenta si el ancla <a> está escrita en mayúsculas o minúsculas.

Esto es un trabajo para WWW::Mechanize, o mejor aún, Google::Search u otro módulo de CPAN dedicado a rascar la web de Google. Lo malo es que Google pone condiciones de uso. Por ejemplo, usando la API de Google solo permite obtener los primeros 64 resultados (extraído del manual de Google::Search).
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: Expresión regular para Google

Notapor danimera » 2011-01-31 21:41 @945

Recomiendo también el uso de WWW::Mechanize para esa tarea.

Ya que aunque Google cambie periódicamente, por lo menos si no abusas tanto es posible lograr esa tarea; también te ahorrarías la expresión regular...

Lo que hace la expresión regular de Python es buscar todo lo que esté dentro de las comillas "" seguido del texto href=
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Expresión regular para Google

Notapor situ » 2011-01-31 22:28 @977

Probá con esto:
http://brevity.org/misc/bestswi_pl.txt
http://www.perlmonks.org/?node_id=662220

Tengo un script, pero no acá. Mañana lo posteo.

Saludos.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 42 invitados