• Publicidad

Comparar páginas Perl

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

Re: Comparar páginas Perl

Notapor explorer » 2011-06-25 03:28 @186

El lenguaje HTML no es un lenguaje de programación, sino de marcado.

El módulo no interpreta el marcado HTML (eso lo deja para nosotros, en las funciones que debemos crear), sino que solo se encarga de bajarlo.
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: Comparar páginas Perl

Notapor jacks » 2011-06-27 07:55 @371

Hola explorer. Hay una cosa que no entiendo. ¿Por qué el programa no me dice las noticias que aparecen en la página como titulares? es decir entras en : http://www.marca.com/futbol/1adivision.html
y aparece Mouriño, aparece Mata... pero cuando ejecuto el programa siempre me saca las mismas cosas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $VAR1 = [
  2.           {
  3.             'link' => '',
  4.             'title' => 'Resumen 2010-2011',
  5.             'description' => 'El Barcelona pudo con el \'efecto Mou\'. Deportivo, Hércules y Almería descienden.'
  6.           },
  7.           {
  8.             'link' => 'http://www.marca.com/reportajes/2011/01/la_primera_vuelta/seccion_00.html',
  9.             'title' => '1ª Vuelta',
  10.             'description' => 'Consulta todos los detalles que nos han dejado los primeros cuatro meses de competición'
  11.           },
  12.           {
  13.             'link' => 'http://www.marca.com/deporte/futbol/primera-division/2010-2011/dorsales/',
  14.             'title' => 'Todos los dorsales',
  15.             'description' => 'Consulta todos los dorsales de los jugadores de la Liga BBVA'
  16.           },
  17.           {
  18.             'link' => 'http://www.marca.com/2010/08/13/multimedia/graficos/1281720946.html',
  19.             'title' => 'La nueva perla del fútbol',
  20.             'description' => 'Analizamos todas las cualidades del nuevo jugador del Real Madrid.'
  21.           },
  22.           {
  23.             'link' => 'http://www.marca.com/2009/11/13/multimedia/graficos/1258122822.html',
  24.             'title' => 'Iniesta, el crack silencioso',
  25.             'description' => 'Descubre todos los secretos del juego de Iniesta y su regate con sello propio.'
  26.           },
  27.           {
  28.             'link' => 'http://www.marca.com/2009/02/07/futbol/equipos/real_madrid/1234005565.html',
  29.             'title' => 'Raúl González Blanco',
  30.             'description' => 'No te pierdas el gráfico sobre el \'7\' blanco tras convertirse en el máximo goleador de la historia del Madrid.'
  31.           },
  32.           {
  33.             'link' => 'http://www.marca.com/edicion/marca/otros_deportes/graficos/es/desarrollo/1046308.html',
  34.             'title' => 'Leo Messi',
  35.             'description' => 'Diseccionamos las jugadas favoritas del azulgrana Leo Messi'
  36.           },
  37.           {
  38.             'link' => 'http://www.marca.com/edicion/marca/otros_deportes/graficos/es/desarrollo/1079288.html',
  39.             'title' => 'Kun Agüero',
  40.             'description' => 'Analizamos todas sus características: remate, regates, control...'
  41.           }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-06-27 10:36 @483

El programa de ejemplo que te he escrito saca los titulares del tipo <h3>, pero esos titulares principales son <h2 >.

Debes modificar la rutina que hace la extracción de los titulares, para que tenga en cuenta esos casos.
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: Comparar páginas Perl

Notapor jacks » 2011-06-28 06:57 @331

Entonces para que salgan las noticias que te decía es cambiar <h3> por <h2>, pero ¿podría poner más bucles? Uno para <h3> otro para <h2> .


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub makeItemList {
  2.     my $self = shift;
  3.     my $html = shift;
  4.  
  5.     # interpretamos el código HTML y crear con ello una lista
  6.     my @list;
  7.  
  8. #    $html = decode('iso-8859-15', $html);
  9.  
  10.     while ($html =~ m|<h3><a href="(.*?)" title="(.*?)".+?<p>(.+?)<|smg){
  11. #        print "[$1][$2][$3]\n";
  12.  
  13.         push(@list,{
  14.             link        => $1,
  15.             title       => $2,
  16.             description => $3,
  17.         });
  18.     }
  19.     return \@list;
  20. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-06-28 09:17 @428

Claro, puedes hacer el cambio o poner un bucle más... el resultado es lo que enviarás con el return().

Eso sí... fíjate bien... no es

'<h2>', sino

'<h2 >' (hay un espacio demás. Debes mirar antes el código fuente de la página que vas a analizar).
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: Comparar páginas Perl

Notapor jacks » 2011-06-29 11:12 @508

Hola, explorer. Estoy intentando hacer lo mismo con la página de As y la verdad, no parece estar igual que Marca. He visto el código y en este caso ¿debería quitar el <h2 > y lo de title: para que me lo encuentre?

Página: http://www.as.com/futbol/primera/

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <td><span>FÚTBOL</span><a href="/futbol/articulo/gea-llevare-atletico-siempre-corazon/20110629dasdasftb_40/Tes">De Gea: "Llevaré al Atlético siempre en mi corazón"</a></td></tr>
  2. <tr><td class="hora">17:23</td>
  3. <td><span>MOTOR</span><a href="/motor/articulo/rosa-alonso-ha-hecho-todo/20110629dasdasmot_3/Tes">De la Rosa: "Alonso ha hecho todo por su afición"</a></td></tr>
  4.  
  5. <tr><td class="hora">17:17</td>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-06-29 12:00 @541

Me parece que estás mirando mal... ¿qué tiene que ver un título de motor con una página de fútbol?

En cuanto localices los titulares de fútbol, sabrás si tienes que modificar la expresión regular o no.
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: Comparar páginas Perl

Notapor jacks » 2011-07-01 06:26 @310

Hola, explorer. Ya una vez que tienes el código para generar los RSS, ¿se podría hacer un bucle pasándole al programa cada una de las URL que tengo almacenadas en la base de datos?

¿Más o menos haciendo el select y recorriendolas con un while() hasta que no quede ninguna URL sin actualizar? El problema que veo es que la URL debe estar introducida en la subrutina init() y no veo desde dónde se hace uso de ella en el programa para pasarle la URL.
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-07-01 09:23 @432

Bueno, habría que organizar un bucle desde el lado de la parte del programa, recorriendo las URL. Y pasando como argumentos a new() el nombre y la URL (sacándolos entonces de init() como valores fijos).

De esa manera, se generará un caché distinto por cada URL.
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: Comparar páginas Perl

Notapor jacks » 2011-07-04 06:14 @301

Hola, explorer, solo querría saber, para hacer lo mismo yo con las otras páginas, cómo sería el patrón de búsqueda para estas noticias que están dentro:

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1.                                 <h2>Access control and identification</h2>
  2.  
  3.                                
  4.                                 <p class="preamble">Security monitoring and access control without physical contact – made possible by RFID-enabled ASSA ABLOY products. </p>
  5.                                 <p>The demand for ASSA ABLOY products based on RFID (Radio Frequency Identification) technology continues to grow. ASSA ABLOY products based on RFID are enabling better end-user services and improving information management for operators in market segments ranging from hospitality and education to e-government and contactless payment.&nbsp;</p>
  6. <p>Our technology <a href="/en/com/Products/Access-control-and-identification/Aperio-online-access-managment/">Aperio gives you wireless possibilities for online door control</a>. It is a new smart technology that enables doors with mechanical locks to be wirelessly linked to existing access control systems without any need to modify the door. Aperio is your answer to conveniently increased security at a competitive cost.</p>
  7. <p>HID Global is leading the way in terms of secure identity solutions and contactless smart card technology for physical access control. Find out more about HID Global at <a title="Access control and identification by HID Global." href="http://www.hidglobal.com" target="_blank">www.hidglobal.com</a>.</p>
  8. <p><a title="Security solutions from ASSA ABLOY" href="/en/com/References/">For inspiration on security solutions from ASSA ABLOY please visit our customer reference pages.</a></p>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Cómo cambiaría esto:

while ($html =~ m|<h2 ><a href="(.*?)" title="(.*?)".+?<p>(.+?)>|smg){
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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