• Publicidad

Ayuda con formulario

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda con formulario

Notapor BigBear » 2015-02-02 11:24 @516

Hola. Tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2.  
  3. my $nave = LWP::UserAgent->new;
  4. $nave->timeout(10);
  5.  
  6. my $target = "5.135.178.142";
  7.  
  8. $re = tomar("http://www.melissadata.com/lookups/iplocation.asp",{'ipaddress='=>$target,'Submit'=>'submit'});
  9.  
  10. print $re;
  11.  
  12. sub tomar {
  13.     my ( $web, $var ) = @_;
  14.     return $nave->post( $web, [ %{$var} ] )->content;
  15. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En este código estoy haciendo un formulario para que la página me revele unos datos de una IP pero el formulario nunca se completa, o sea, sigue apareciendo normal como si hubiese hecho algo mal.

¿ Cuál es el error ?
Última edición por BigBear el 2015-02-02 13:18 @595, editado 2 veces en total
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Ayuda con formulario

Notapor explorer » 2015-02-02 12:58 @582

No sabemos lo que vale $nave...

Por lo demás, yo no veo fallos...

Bueno, cambiaría

post( $web, [ %{$var} ] )

por

post( $web, $var )
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: Ayuda con formulario

Notapor BigBear » 2015-02-02 13:18 @596

Ahí actualicé bien el código pero creo que el problema está en los datos del post, ¿tú los ves bien?
Última edición por explorer el 2015-02-02 13:53 @620, editado 1 vez en total
Razón: ahi => Ahí; actualice => actualicé; codigo => código; esta => está; tu => tú;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Ayuda con formulario

Notapor explorer » 2015-02-02 15:11 @674

Pues... sí.

Debe haber algo más que impida que obtengas el resultado. Quizás la página tenga contramedidas para evitar el uso automatizado.

Por ejemplo, analizar el campo referer de la petición.
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: Ayuda con formulario

Notapor BigBear » 2015-02-02 17:50 @784

Ok, explorer, mira el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2.  
  3. my $nave = LWP::UserAgent->new();
  4. $nave->timeout(5);
  5. $nave->agent(
  6. "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
  7. );
  8.  
  9. my $code = tomar("http://www.iplocation.net",{"query"=>"5.135.178.142","submit"=>"Query"});
  10.  
  11. if($code=~/<td width=\"80\">(.*)<\/td><td>(.*) <img src="(.*)"><\/td><td>(.*)<\/td><td>(.*)<\/td><td>(.*)<\/td>/) {
  12. print $3."\n";
  13. print $5."\n";
  14. print $6."\n";
  15. } else {
  16. print $code;
  17. }
  18.  
  19. sub toma {
  20.    return $nave->get( $_[0] )->content;
  21. }
  22.  
  23. sub tomar {
  24. my ( $web, $var ) = @_;
  25. return $nave->post( $web, [ %{$var} ] )->content;
  26. }
  27.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Básicamente hace lo mismo en otra página, esta vez sí muestra datos pero las expresiones regulares me dan problemas en esta zona:

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <td width="80">5.135.178.142</td><td>France <img src="/images/flags/fr.gif"></td><td>Nord-pas-de-calais</td><td>Roubaix</td><td>Ovh Sas</td></tr><tr><td co
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿ Qué estoy haciendo mal ?
Última edición por explorer el 2015-02-03 09:17 @428, editado 1 vez en total
Razón: codigo => código; Basicamente => Básicamente; pagina => página; si => sí; Que => Qué;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Ayuda con formulario

Notapor explorer » 2015-02-03 10:42 @488

A mi me funciona sin problemas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.14;
  3.  
  4. my $code = q(<td width="80">5.135.178.142</td><td>France <img src="/images/flags/fr.gif"></td><td>Nord-pas-de-calais</td><td>Roubaix</td><td>Ovh Sas</td></tr><tr><td co);
  5.  
  6. $code =~ m{<td width="80">(.*?)</td><td>(.*?) <img src="(.*?)"></td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td>};
  7.  
  8. say "[$1][$2][$3][$4][$5][$6]";   # [5.135.178.142][France][/images/flags/fr.gif][Nord-pas-de-calais][Roubaix][Ovh Sas]
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra forma de escribirlo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $code =~ m{<td width="80">(?<ip>.*?)</td><td>(?<pais>.*?) <img src="(?<img>.*?)"></td><td>(?<villa>.*?)</td><td>(?<prov>.*?)</td><td>(?<isp>.*?)</td>};
  2. say "[$+{ip}][$+{pais}][$+{img}][$+{villa}][$+{prov}][$+{isp}]";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

O incluso más bonito así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $code =~ m{
  2.             <td[ ]width="80"> (?<ip>    .*?)                              </td>
  3.             <td>              (?<pais>  .*?) [ ]<img[ ]src="(?<img>.*?)"> </td>
  4.             <td>              (?<villa> .*?)                              </td>
  5.             <td>              (?<prov>  .*?)                              </td>
  6.             <td>              (?<isp>   .*?)                              </td>
  7.         }x;
  8.  
  9. say "[$+{ip}][$+{pais}][$+{img}][$+{villa}][$+{prov}][$+{isp}]";
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: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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