• 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 jacks » 2011-10-10 05:56 @289

Hola, tengo un problema a la hora de generar los RSS. He añadido una nueva página y al script que genera los RSS; le añadido un nuevo patrón de búsqueda. El problema es que si lo ejecuto el programa introduciendo yo la URL lo genera bien con el patrón, pero si ejecuto el programa main y éste le pasa la URL es como si no reconoce ese patrón y no genera nada. El link sí que lo recoge el programa actualizar porque lo he comprobado con un print() pero no sé por qué no genera el .cache de esta manera. :?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Publicidad

Re: Comparar páginas Perl

Notapor jacks » 2011-10-18 03:37 @192

Hola, quería saber qué es lo que estoy haciendo mal a la hora de sacar esta información. Quiero sacar lo que pone en la línea 57 (Monedero cuadrado y el link de su izquierda pero me saca mucho código HTML con este patrón que uso:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($html =~ m{.+?<tr>.+?<td width="42%" valign="top"><a class="links" href="(.+?)">(.+?)</a></td>}smg){
  2.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1.   <tr>
  2.  
  3.     <td class="separador">&nbsp;</td>
  4.  
  5.     <td height="10">
  6.  
  7.        
  8.  
  9.       <table width="85%" cellspacing="10" cellpadding="0" border="0" align="center">
  10.  
  11.         <tr>
  12.  
  13.                     <td valign="top">
  14.  
  15.                                                 <table width="200" cellspacing="0" cellpadding="0" border="0" bgcolor="#FFFFFF">
  16.  
  17.                           <tr>
  18.  
  19.                             <td class="tipo_producto"><div align="center">Elegance Q</div></td>
  20.  
  21.                           </tr>
  22.  
  23.                           <tr>
  24.  
  25.                             <td width="42%" valign="middle">
  26.  
  27.                               <table width="165" height="130" cellspacing="0" cellpadding="0" border="0" bgcolor="#FFFFFF" align="center" class="bordefoto">
  28.  
  29.                                         <tr>
  30.  
  31.                                   <td><div align="center" class="texto_productos">
  32.  
  33.                                                                           <img src="fotos/subc_19g.jpg" border="0" alt="">
  34.  
  35.                                                   </div></td>
  36.  
  37.                                 </tr>
  38.  
  39.                               </table>                      </td>
  40.  
  41.                           </tr>
  42.  
  43.                           <tr>
  44.  
  45.                                 <td valign="middle">
  46.  
  47.                                                                   <table width="165" cellspacing="0" cellpadding="0" border="0" bgcolor="#FFFFFF" align="center">
  48.  
  49.                                         <tr>
  50.  
  51.                                           <td height="5"></td>
  52.  
  53.                                         </tr>
  54.  
  55.                                                                                 <tr>
  56.  
  57.                                                   <td width="42%" valign="top"><a class="links" href="listadoproductos.php?id=36">Monedero Cuadrado</a></td>
  58.  
  59.                                                 </tr>
  60.  
  61.                                                                               </table>                          </td>
  62.  
  63.                           </tr>
  64.  
  65.                         </table>            </td>
  66.  
  67.                         <td valign="top">
  68.  
  69.                                                 <table width="200" cellspacing="0" cellpadding="0" border="0" bgcolor="#FFFFFF">
  70.  
  71.                           <tr>
  72.  
  73.                             <td class="tipo_producto"><div align="center">Elegance R</div></td>
  74.  
  75.                           </tr>
  76.  
  77.                           <tr>
  78.  
Coloreado en 0.003 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-10-18 15:03 @668

Pues... a mí me funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;               # Somos modernos
  3. use File::Slurp;
  4.  
  5. my $html = read_file('code_28221_1.txt');
  6.  
  7. while ($html =~ m{.+?<tr>.+?<td width="42%" valign="top"><a class="links" href="(.+?)">(.+?)</a></td>}smg) {
  8.     say "[$1]=>[$2]";
  9. }
  10.                                                                          
  11. __END__
  12. [listadoproductos.php?id=36]=>[Monedero Cuadrado]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
De hecho, funciona con esta reducida:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($html =~ m{<td width="42%" valign="top"><a class="links" href="(.+?)">(.+?)<}smg) {
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar páginas Perl

Notapor jacks » 2011-11-29 18:11 @799

¡Hola! ¿Hay alguna manera de hacer que un proceso pare al cabo de un cierto tiempo? Por ejemplo: un proceso de búsqueda en una página web, para generar los rss, pero tarda demasiado porque la página no existe. ¿Cómo puedo hacer que, por ejemplo, si tras pasar 1 minuto y no ha conseguido nada, pare y pase al siguiente proceso?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-11-29 18:20 @805

Definiendo un timeout para el objeto que se encarga de bajar la página.

Depende de quién se encarga de hacerlo, pero, por ejemplo, mira en la sinopsis del módulo LWP::UserAgent, verás cómo define ese tiempo a solo 10 segundos.
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

Re: Comparar páginas Perl

Notapor jacks » 2011-12-22 11:01 @501

Hola. ¿Cómo puedo convertir el formato de esta fecha al formato de fecha de MySQL?


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. fecha => $self->getDateTime('19940203T141529Z'),
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
'fecha' => 'Mon, 19 Sep 2011 16:01:44 GMT',
Coloreado en 0.000 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-12-22 11:52 @536

¿A qué fecha te refieres?

¿A '19940203T141529Z', a 'Mon, 19 Sep 2011 16:01:44 GMT', o a la fecha almacenada en un objeto DateTime o de otra clase?
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

Re: Comparar páginas Perl

Notapor jacks » 2011-12-23 05:48 @284

Perdón, a 'Mon, 19 Sep 2011 16:01:44 GMT'.
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Comparar páginas Perl

Notapor explorer » 2011-12-23 07:32 @356

Vale, ese formato es el indicado en el RFC 1123, también llamado HTTP Time.

Se puede hacer de muchas formas. Aquí te pongo dos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
  4. # Joaquín Ferrero. 20111223 1324
  5. #
  6. use DateTime;
  7. use DateTime::Format::HTTP;
  8. use DateTime::Format::MySQL;
  9.  
  10. my $dt = DateTime::Format::HTTP->parse_datetime('Mon, 19 Sep 2011 16:01:44 GMT');
  11.  
  12. print DateTime::Format::MySQL->format_datetime($dt);    # 2011-09-19 16:01:44
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
  4. # Joaquín Ferrero. 20111223 1324
  5. #
  6. use HTTP::Date 'parse_date';
  7.  
  8. my $fecha = "Mon, 19 Sep 2011 16:01:44 GMT";
  9.  
  10. my $fecha2 = scalar parse_date( $fecha );
  11.  
  12. $fecha2 =~ s/\D+$//;                                    # quitamos la zona horaria
  13.  
  14. print $fecha2;                                          # 2011-09-19 16:01:44
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De esta última versión, hay una variante, usando parse_date() en contexto lista, donde obtenemos todos los componentes de la fecha por separado:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #
  3. # Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
  4. # Joaquín Ferrero. 20111223 1324
  5. #
  6. use HTTP::Date 'parse_date';
  7.  
  8. my $fecha = "Mon, 19 Sep 2011 16:01:44 GMT";
  9.  
  10. my @fecha2 = parse_date( $fecha );
  11.  
  12. my $fecha2 = sprintf "%02d-%02d-%02d %02d:%02d:%02d", @fecha2[0..5];
  13.  
  14. print $fecha2;                      # 2011-09-19 16:01:44
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: 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 0 invitados