• Publicidad

Obtener información de un archivo html

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Re: Obtener información de un archivo html

Notapor explorer » 2013-10-31 12:01 @542

¡El Perl v5.8.8 es del año 2006!
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. > perldoc -T perlhist|fgrep 5.8.8
  2.                  5.8.8-RC1     2006-Ene-20
  3.                  5.8.8         2006-Ene-31
  4.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

willbender escribiste:El problema es que no puedo actualizar la versión de Perl del servidor en donde correrá este perl debido a que ya hay perl colocados y que funcionan ahí y, pues, definitivamente no deseo entrar en conflictos con los demás programas.
Perl es uno de los lenguajes que más compatibilidad hacia atrás posee. Los cambios a realizar siempre son mínimos. Yo incluso tengo código escrito del 2003 que sigue funcionando con la última versión, la v5.18.1.

Si no puedes actualizar el Perl, o usar perlbrew para instalar una versión más moderna, pues entonces quita o comenta la segunda línea, y cambia los say() por un print() más un "\n" al final.

El uso de utf8::all es para gestionar caracteres tildados. Si no lo puedes instalar, quita o comenta la cuarta línea, y cambia todos los caracteres tildados de las variables del programa ($regex_país => $regex_pais).

¿Qué expresión regular quieres modificar?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Obtener información de un archivo html

Notapor willbender » 2013-10-31 13:36 @608

Hice los cambios que me decías pero no imprime nada. Verifiqué y no está entrando al while.

Probaré un par de cambios al script porque no entiendo por qué no imprime.
willbender
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2012-07-16 17:22 @765
Ubicación: Guatemala

Re: Obtener información de un archivo html

Notapor explorer » 2013-10-31 13:50 @618

Ten en cuenta que en mi versión, debes cambiar 'code_35850.html' por el nombre del html tuyo.

Publica aquí tu versión y así vemos si tiene algún error.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener información de un archivo html

Notapor willbender » 2013-10-31 14:03 @627

Te pongo lo que ya modifiqué
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. #use v5.14;
  3. use autodie;
  4. #use utf8::all;
  5. use File::Slurp;
  6.  
  7. ## Leemos el archivo
  8. my $html = read_file('/home/sergio/ticket25852/filetofix.html');
  9.  
  10. #Definición de lo que buscamos
  11. my $regex_pais   = qr{  ^
  12.                             <A[ ]name=\d+></a>            .+? \n
  13.                             <b> \s* (\?<pais>.+?) \s* </b> .+? \n
  14.                             Last[ ]Updated:[ ]            .+? \n
  15.                        }mix;
  16. my $regex_eol    = qr{\s*? <br> \s*? \n}ix;
  17. my $regex_cargo  = qr{^ (?<!<) (\?<cargo>.+?)  $regex_eol }mix;
  18. my $regex_nombre = qr{^ (?<!<) (\?<nombre>.+?) $regex_eol }mix;
  19. my $regex_staff  = qr{(\?<staff>(?:$regex_cargo $regex_nombre)+)}x;
  20.  
  21. ## Buscamos
  22.  
  23. while ($html =~ /$regex_pais $regex_staff/mxg) {
  24.  
  25.     my($pais, $staff) = ($+{pais}, $+{staff});
  26.     print "pais: [$pais]\n";
  27.  
  28.     while ($staff =~ /$regex_cargo $regex_nombre/gx) {
  29.         print "\t[$+{cargo}]", "\t[$+{nombre}]\n";
  30.         }
  31.     }
  32.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
willbender
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2012-07-16 17:22 @765
Ubicación: Guatemala

Re: Obtener información de un archivo html

Notapor explorer » 2013-10-31 14:36 @650

Vale, ya sé lo que pasa: el hash especial %+ solo es válido a partir de Perl v5.10.

Además, en las expresiones regulares has puesto varios caracteres '\', que no son correctos.

Esta es la versión para Perl viejos
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5. use autodie;
  6. use File::Slurp;
  7.  
  8. ## Leemos el archivo
  9. my $html = read_file('code_35850.html');
  10.  
  11. ## Definición de lo que buscamos
  12. my $regex_pais   = qr{
  13.                         ^ <A[ ]name=\d+></a> .+? \n
  14.                         ^ <b> (.+?) \s* </b> .+? \n
  15.                         ^ Last[ ]Updated:[ ] .+? \n
  16.                      }mix;
  17. my $regex_item   = qr{^ (?<!<) (.+?) \s*? <br> \s*? \n }mix;
  18. my $regex_staff  = qr{((?:$regex_item $regex_item)+)   }x;
  19.  
  20. ## Buscamos
  21. while ($html =~ /$regex_pais $regex_staff/mxg) {
  22.  
  23.     my($pais, $staff) = ($1, $2);
  24.  
  25.     print "País: [$pais]\n";
  26.  
  27.     while ($staff =~ /$regex_item $regex_item/gx) {
  28.         print "\t[$1]", "\t[$2]", "\n";
  29.     }
  30. }
Coloreado en 0.002 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: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener información de un archivo html

Notapor willbender » 2013-10-31 15:11 @674

Excelente. Funciona de maravilla. ¡Muchísimas gracias!
willbender
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2012-07-16 17:22 @765
Ubicación: Guatemala

Anterior

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron