Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Módulos » Duda con HTML::Form  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 12 mensajes ] 
 
Nota 2011-06-18 20:22 @890

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Duda con HTML::Form
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.

Syntax: [ Download ] [ Hide ]
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.  


¿ Alguien me podría ayudar ?


Nota 2011-06-19 04:17 @220
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Duda con HTML::Form
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


Nota 2011-06-19 09:47 @449

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Re: Duda con HTML::Form
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?


Nota 2011-06-19 10:13 @467
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Duda con HTML::Form
Pues, por ejemplo: 'http://localhost/'

_________________
JF^D Perl programming


Nota 2011-06-19 12:25 @559

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Re: Duda con HTML::Form
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í:
Syntax: [ Download ] [ Hide ]
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";


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 ?


Nota 2011-06-19 13:35 @607

Perlero Nuevo
Registrado: 2011-06-19 13:27 @602
Mensajes: 15
Re: Duda con HTML::Form
Hola,

Prueba con una variable de array. Algo así:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my @test = HTML::Form->parse($texto,"/");


Saludos,
Birei


Nota 2011-06-19 14:08 @630

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Re: Duda con HTML::Form
Ya lo intenté y nada :(


Nota 2011-06-19 15:58 @707

Perlero Nuevo
Registrado: 2011-06-19 13:27 @602
Mensajes: 15
Re: Duda con HTML::Form  RESUELTO
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.

Syntax: [ Download ] [ Hide ]
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.  


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:

Syntax: [ Download ] [ Hide ]
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.  


Saludos,
Birei


Nota 2011-06-19 16:11 @716

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Re: Duda con HTML::Form
Perfecto, birei. Sigue así y pronto serás el nuevo explorer :D


Nota 2011-06-20 11:09 @506

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Cargar formulario en HTML::Form
Hola, necesito saber cómo cargar cierto formulario (habiendo varios) usando HTML::Form
Syntax: [ Download ] [ Hide ]
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.  


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
podria => podría


Nota 2011-06-20 11:19 @513
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Duda con HTML::Form
No lo he probado, pero mirando la respuesta de Birei, sería algo así:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $test = ( HTML::Form->parse($texto,"/") )[1]; # segundo formulario del $texto

_________________
JF^D Perl programming


Nota 2011-06-20 11:53 @536

Perlero Senior
Registrado: 2009-03-01 18:39 @818
Mensajes: 387
Re: Duda con HTML::Form
Hecho, funciona como quería.


Responder al tema  [ 12 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO