• Publicidad

Medallero automático de Londres 2012 en Wikipedia

¿Estás desarrollando un proyecto, o piensas hacerlo? Pon aquí tu propuesta, lo más seguro es que alguien esté interesado en ayudarte.

Medallero automático de Londres 2012 en Wikipedia

Notapor explorer » 2012-08-08 17:53 @786

Un año más, hemos colaborado en la creación de un programa que coloca la información de las medallas conseguidas por los deportistas participantes en los Juegos Olímpicos Londres 2012, de forma automática, y casi en tiempo real.

El programa Perl de este año es mucho más corto que el de otros años, en parte porque la organización de los juegos da toda la información, y por otra parte por el uso de Mojolicious, que permite extraer información usando XPath, de forma cómoda.

El código ya está publicado en una página personal.
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

Publicidad

Re: Medallero automático de Londres 2012 en Wikipedia

Notapor BigBear » 2012-08-29 08:29 @395

No capto la onda. ¿Por qué usas Mojo y no LWP::UserAgent?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Medallero automático de Londres 2012 en Wikipedia

Notapor explorer » 2012-08-29 10:39 @485

LWP sólo sirve para hacer peticiones HTTP.

Con Mojo, puedo bajar la página y extraer la información, en un solo paso. Ejemplo extraído del código del medallero:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $ua = Mojo::UserAgent->new(
  2.     name                => 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1',
  3.     request_timeout     => 5,
  4. );
  5.  
  6. my $div = $ua->get(
  7.     $MEDALLERO_OFICIAL,
  8.     {
  9.         'Accept'                => 'text/html',
  10.         'Referer'               => 'http://www.london2012.com/medals/',
  11.         'Accept-Encoding'       => 'none',
  12.         'DNT'                   => 1,
  13.         'Accept-Language'       => 'es,es-es;q=0.8,en;q=0.5,en-us;q=0.3',
  14.     }
  15. )
  16. ->res                            # de la respuesta
  17. ->dom                            # generamos el DOM de la página
  18. ->find("div[id=lgc-main]")       # buscamos esa marca
  19. ->[0];                           # y la extraemos
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Vemos que generamos un UserAgent, del mismo modo que lo haríamos con LWP::UserAgent. Pero, a continuación, pedimos la página, obtenemos la respuesta, pasamos la estructura de la página al modelo de objetos, buscamos la marca que queremos usando notación parecida a XPath o los selectores CSS3, y extraemos la parte de la página que nos interesa.

Edito: usar las expresiones regulares para sacar la información pasó de moda.

Re-edito: otro ejemplo de hoy en mismo, con Mojo.
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


Volver a Proyectos

¿Quién está conectado?

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