• Publicidad

Duda con HTML::Form

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Duda con HTML::Form

Notapor BigBear » 2011-06-18 20:22 @890

Tengo un problema con este módulo porque no puedo usarlo para parsear un archivo, porque lo que quiero es abrir el contenido de un archivo html local y guardarlo en una variable para después usar este módulo, pero este modulo requiere combinar el uso de LWP:UserAgent y no es lo quiero.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use HTML::Form;
  2.  
  3. $texto = "<form> bla bla bla"; # contenido de algún archivo
  4.  
  5. my @test = HTML::Form->parse($texto);
  6.  
  7. print $test->method."\n";
  8.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


¿ Alguien me podría ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Duda con HTML::Form

Notapor explorer » 2011-06-19 04:17 @220

La documentación dice que la función parse() necesita dos argumentos: el texto a analizar, y el URI base con el que se resuelven las URI relativas que se encuentre en el formulario.

No dice que LWP::UserAgent vaya a usarse para "recuperar" el texto desde Internet, sino que el segundo parámetro se utiliza para la resolución de las direcciones relativas.
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: Duda con HTML::Form

Notapor BigBear » 2011-06-19 09:47 @449

Gracias por la explicación, explorer, pero, entonces ¿qué debería poner como segundo parámetro en la función parse()? ¿Me podrías dar un ejemplo con un archivo de texto?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Duda con HTML::Form

Notapor explorer » 2011-06-19 10:13 @467

Pues, por ejemplo: 'http://localhost/'
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: Duda con HTML::Form

Notapor BigBear » 2011-06-19 12:25 @559

Gracias por la ayuda, explorer, pero tengo otra duda con el módulo, porque he logrado cargar el formulario mostrando values, names y otra cosas, pero el problema es que al haber dos formularios el módulo solo detecta el primero y al segundo ni lo ve.

El código queda así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     use HTML::Form;
  2.      
  3.     $texto = "<form> bla bla bla</form><form>bla1 bla2></form>"; # contenido de algún archivo
  4.      
  5.     my $test = HTML::Form->parse($texto,"/");
  6.      
  7.     print $test->method."\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En realidad la variable $texto solo es un ejemplo, porque lo estoy probando con formularios completos no con "bla bla" :D

¿ No sabes cómo obtener todos los formularios ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Duda con HTML::Form

Notapor Birei » 2011-06-19 13:35 @607

Hola,

Prueba con una variable de array. Algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @test = HTML::Form->parse($texto,"/");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos,
Birei
Birei
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2011-06-19 13:27 @602

Re: Duda con HTML::Form

Notapor BigBear » 2011-06-19 14:08 @630

Ya lo intenté y nada :(
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Duda con HTML::Form

Notapor Birei » 2011-06-19 15:58 @707

Este ejemplo funciona para mí. Obtiene la página de búsqueda avanzada de Google, que contiene 3 formularios y recupera el atributo "name" de cada uno de ellos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use LWP::UserAgent;
  4. use HTML::Form;
  5.  
  6. my $ua = LWP::UserAgent->new;
  7.  
  8. my $resp = $ua->get("http://www.google.es/advanced_search?hl=es");
  9. die "Cannot get Google Advanced Search page\n" unless defined $resp;
  10.  
  11. my @forms = HTML::Form->parse(
  12.     $resp->decoded_content,
  13.     base    => $resp->base,
  14.     charset => $resp->content_charset
  15. );
  16. die "Cannot find any forms\n" unless @forms;
  17.  
  18. foreach my $form (@forms) {
  19.     print $form->attr("name"), "\n";
  20. }
  21.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Por su parte, en tu código, si intento almacenar el resultado en una variable de array y lo recorro, me recupera los dos formularios:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use HTML::Form;
  4.  
  5. my $texto = qq(<form name="a"> bla bla bla</form><form name="b">bla1 bla2></form>);
  6. my @test = HTML::Form->parse($texto,"/");
  7.  
  8. foreach my $form ( @test ) {
  9.         print $form->attr( "name" ), "\n";
  10. }
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos,
Birei
Birei
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2011-06-19 13:27 @602

Re: Duda con HTML::Form

Notapor BigBear » 2011-06-19 16:11 @716

Perfecto, birei. Sigue así y pronto serás el nuevo explorer :D
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Cargar formulario en HTML::Form

Notapor BigBear » 2011-06-20 11:09 @506

Hola, necesito saber cómo cargar cierto formulario (habiendo varios) usando HTML::Form
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         use HTML::Form;
  2.          
  3.         $texto = "<form> bla bla bla</form><form>bla1 bla2></form><form>dasdsads</form>"; # contenido de algún archivo
  4.          
  5.         my $test = HTML::Form->parse($texto,"/");
  6.          
  7.         print $test->method."\n";
  8.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Los formularios que tengo no tienen "name" por eso requiero acceder a ellos usando número de existencia; lo que necesito es conocer solo el segundo.

¿ Alguien me podría ayudar ?
Última edición por explorer el 2011-06-20 11:16 @511, editado 1 vez en total
Razón: podria => podría
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Siguiente

Volver a Módulos

¿Quién está conectado?

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