• Publicidad

Leer una 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.

Leer una página web

Notapor Fegna » 2008-01-08 10:07 @463

Soy nuevo en Perl y estoy buscando la forma de abrir una página web para rescatar un valor.

Me explico:
En la página web del Banco Central de Chile despliegan ciertos valores (dolar, Euro y otros) que son el cambio oficial.

Yo requiero obtener esos valores y pensé en abrir la página web, buscar el valor necesitado y rescatarlo, luego cerrar el archivo y continuar realizando lo que necesito.

Supongo que para abrir un archivo se debe utilizar OPEN, lo que no se es si puedo abrir como archivo una página web.

Gracias
Fegna
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-01-08 09:29 @437
Ubicación: Santiago, Chile

Publicidad

Notapor explorer » 2008-01-08 10:38 @485

Bienvenido a los foros de Perl en Español, Fegna.

Se puede abrir si lo permite el sistema operativo.

Por ejemplo, en Linux y con el entorno KDE es posible usar las funcionalidades de su gestor de ficheros, el Konqueror, y abrir, bajar o editar un fichero utilizando alguno de los protocolos que Konqueror reconoce.

De todas formas, una solución mucho más cómoda es hacer una petición web, bajar la página y extraer el dato.

Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use LWP::Simple;
use HTML::TableExtract;

my $pagina = get('http://www.bcentral.cl/');

my $te = HTML::TableExtract->new( attribs => { summary => 'Indicadores diarios' } );
$te->parse($pagina);

foreach $tabla ($te->tables) {
    foreach $fila ($tabla->rows) {
        print " ", join(', ', @$fila), "\n";
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Sale:
Código: Seleccionar todo
 UF, 19.663,05
 UTM (Enero), 34.496,00
 Dólar Observado, 495,64
 Euro, 727,92
 TCM (02/01/1998=100), 103,43


Quizás veas algunas cosas raras en la sintaxis, pero eso se aprende poco a poco. Y aquí te resolveremos todas las dudas que podamos.

Y, naturalmente, esa no es la única solución. Hay muchas más. ¡Encuentra la tuya!
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

Notapor Fegna » 2008-01-08 12:50 @576

Muchas gracias, la sintaxis me quedó clara.

Como duda, ¿para qué se define LWP? o, dicho de otra manera, ¿dónde se utiliza?

Intentaré hacerlo de otra manera cuando tenga tiempo para poder aprender un poco más.

Gracias
Fegna
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-01-08 09:29 @437
Ubicación: Santiago, Chile

Notapor explorer » 2008-01-08 14:14 @634

El módulo LWP::Simple se usa para la definición de la función get() (recuperar un recurso o página desde Internet).
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

Notapor Jenda » 2008-01-13 13:03 @585

Fegna escribiste:Como duda, ¿para qué se define LWP? o, dicho de otra manera, ¿dónde se utiliza?


LWP = libwww-perl

Es un grupo de módulos para bajar páginas de web, mandar datos por HTTP y otras cosas en relación con web.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor natxo » 2008-01-13 15:17 @679

wow. No sabía de este módulo, HTML::TableExtract.

Siempre ando con expresiones regulares reinventando la rueda.

Lo he probado con un fichero HTML que tengo en el disco duro y no me funciona, en cambio si lo subo al servidor web y lo hago como indicas en tu ejemplo, funciona perfecto.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use HTML::TableExtract;

my $pagina = '/tmp/archivo.html';

my $te = HTML::TableExtract->new( attribs => { class => 'callstable' } );
$te->parse($pagina);
foreach $tabla ($te->tables) {
    foreach $fila ($tabla->rows) {
        print " ", join(', ', @$fila), "\n";
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pregunta: ¿es posible usar este módulo desde el sistema de archivos y no sólo desde la web?
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Notapor explorer » 2008-01-13 16:07 @713

No, no lo estás usando bien. $pagina no contiene el nombre del fichero o la dirección URL de la página a analizar. $pagina contiene el contenido real de la página.

En el ejemplo ves que se hace un get(), y de esa manera obtenemos la página. En tu caso, deberás hacer un open(), y luego leer la página para guardarla en $pagina.
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

Notapor natxo » 2008-01-13 16:20 @722

Tienes razón, he metido todo el archivo en la variable $pagina con un slurp y ahora funciona.

Mola, gracias.
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Notapor explorer » 2008-01-13 16:29 @728

Humm.... ¿y qué pasa si en el programa original, cambiamos, en el get(), el protocolo 'http://' por el 'file:///' junto con el camino completo al fichero?

Sería interesante, pero apuesto a que solo tiene soporte para 'http:'.
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

Notapor natxo » 2008-01-14 00:47 @074

explorer escribiste:Humm.... ¿y qué pasa si en el programa original, cambiamos, en el get(), el protocolo 'http://' por el 'file:///' junto con el camino completo al fichero?

Sería interesante, pero apuesto a que solo tiene soporte para 'http:'.


El get('file:///) también funciona y es mucho más rápido de escribir que el hacer un slurp del archivo. :-)
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Siguiente

Volver a Básico

¿Quién está conectado?

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