• Publicidad

Buscar información en página web

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

Re: Buscar información en página web

Notapor jacks » 2012-02-02 09:19 @430

Sí, pero yo ahora no me refiero solamente a cambiar el formato de la página si lo ha hecho correctamente. Me refiero a la hora de crear un RSS con las noticias que se han añadido, si por ejemplo tengo tres patrones de búsqueda y uno de ellos me vale para sacar cuatro noticias y con los otros dos saco tres noticias con cada uno, si uno de ellos por ejemplo, el que me saca cuatro noticias si no consigue sacar ninguna ¿podría saber también de esta manera que no funciona o que ya no sirve?

Yo uso el código de XML::RSS::FromHTML:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub makeItemList {
  2.  
  3.     my $self = shift;
  4.     my $html = shift;
  5.  
  6.     # Interpretamos el código HTML y crear con ello una lista:
  7.  
  8.     my @list;
  9.  
  10.     # $html = decode('iso-8859-15', $html);                                             # Codificación ha 'iso-8859-15'.
  11.  
  12.     my $urls = $self->url();
  13.  
  14.     while ( $html =~ m{<div id="subnavigation">.+?<h2><span>(.+?)</span></h2>.+?<p class="preamble">(.+?)</p>}smg ) {
  15.  
  16.         # print "[$1][$2][$3]\n";                                                       # Imprimir por  pantalla lo que hemos encontrado.
  17.  
  18.         push(
  19.             @list,
  20.             {                          # La lista de los elementos (Título, Link, Descripcion).
  21.  
  22.                 Link        => $urls,
  23.                 title       => $1,
  24.                 description => $2,
  25.                 fecha       => $self->getDateTime(),
  26.             }
  27.         );
  28.  
  29.     }
  30.  
  31.     while ( $html =~ m{<div>.+?<p class="date">(.+?)</p>.+?<h4><a href=".+?">(.+?)</a></h4>}smg )
  32.     {                                  # Patrón por el que buscaremos las notícias.
  33.  
  34.         # print "[$1][$2][$3]\n";                                                       # Imprimir por  pantalla lo que hemos encontrado.
  35.  
  36.         push(
  37.             @list,
  38.             {                          # La lista de los elementos (Título, Link, Descripcion).
  39.  
  40.                 Link        => $urls,
  41.                 title       => $1,
  42.                 description => $2,
  43.  
  44.                 fecha => $self->getDateTime(),
  45.             }
  46.         );
  47.  
  48.     }
  49.  
  50.     while ( $html
  51.         =~ m{</div><div class=".+?"><h3 class="">(.+?)</h3>.+?<p class="read-more">.+?<a href=".+?"><span>(.+?)</span></a>}smg
  52.         ) {                            # Patrón por el que buscaremos las noticias.
  53.  
  54.         # print "[$1][$2][$3]\n";                                                       # Imprimir por  pantalla lo que hemos encontrado.
  55.  
  56.         push(
  57.             @list,
  58.             {                          # La lista de los elementos (Título, Link, Descripcion).
  59.  
  60.                 Link        => $urls,
  61.                 title       => $1,
  62.                 description => $2,
  63.                 fecha       => $self->getDateTime(),
  64.             }
  65.         );
  66.  
  67.     }
  68.     return \@list;                     # Devuelve la lista que hemos generado.
  69.  
  70. }
  71.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-02-02 10:13 @467, editado 1 vez en total
Razón: Formateado de código con Perltidy
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Publicidad

Re: Buscar información en página web

Notapor explorer » 2012-02-02 10:17 @470

Lo que podrías hacer es que cada bucle while() guarde lo encontrado en un array diferente. Así, sabrás qué ha conseguido recuperar cada expresión regular (al final de la subrutina reúnes todos los array con @list = ( @array1, @array2, @array3, ...); antes de hacer el return()).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

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

cron