recuperer les inputs d'un formulaire

Le
Fabrice
Bonjour,

je cherche a récuperer les inputs d'une page internet.

#!/usr/bin/perl

use HTTP::Cookies;
use HTML::Form;
use LWP::UserAgent;



print "Content-type: text/html";

my $base = "https://www.google.fr";
my $cookie = "cookie.txt";


# crée un agent et une requête
my $ua = LWP::UserAgent->new(
agent => 'Mozilla/4.75 [fr] (IE9; Windows XP; Nav)',
cookie_jar => HTTP::Cookies->new( file => $cookie, autosave ==
> 1, ignore_discard => 1)
);

my $req = HTTP::Request->new( GET => $base );

# récupère la réponse
my $res = $ua->request($req);

my $form = ( HTML::Form->parse( $res->decoded_content, $base ) )[0];
@inputs = $form->inputs;

print @inputs;


et j'ai comme résultat : HTML::Form::TextInput=HASH(0x3226310)HTML::=
Form::TextInput=HASH(0x3226370)HTML::Form::TextInput=HASH(0x32259c8)HTM=
L::Form::TextInput=HASH(0x32258c0)HTML::Form::SubmitInput=HASH(0x322653=
8)HTML::Form::SubmitInput=HASH(0x31ca3e8)HTML::Form::TextInput=HASH(0x3=
225e18)

une idée du pourquoi ?

D'avance merci

Fabrice
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc SCHAEFER
Le #26473802
Fabrice
my $form = ( HTML::Form->parse( $res->decoded_content, $base ) )[0];
@inputs = $form->inputs;
print @inputs;
et j'ai comme résultat : HTML::Form::TextInput=HASH(0x3226310)HTML::Form::TextInput=HASH(0x3226370)HTML::Form::TextInput=HASH(0x32259c8)HTML::Form::TextInput=HASH(0x32258c0)HTML::Form::SubmitInput=HASH(0x3226538)HTML::Form::SubmitInput=HASH(0x31ca3e8)HTML::Form::TextInput=HASH(0x3225e18)
une idée du pourquoi ?

http://search.cpan.org/~gaas/HTML-Form-6.03/lib/HTML/Form.pm
me dit que la méthode HTML::Forms::inputs retourne un tableau de
classes dérivées de HTML::Form qui représentent en modèle orienté-objet
les différents objets du formulaire, ou, plutôt, les paires noms-valeurs.
Lire http://search.cpan.org/~gaas/HTML-Form-6.03/lib/HTML/Form.pm#INPUTS
pour plus d'informations et exemples.
Je suppose, sans avoir essayé, que:
foreach my $input ($form->inputs) {
print $input->name(), " -> ", $input->value(), "n";
}
donne probablement la liste des clés-valeurs soumises via le formulaire.
NB: si j'avais connu ce module Perl quand je faisais de la programmation
CGI avec, je l'aurais utilisé; aujourd'hui je recommande Mojolicious
(qui peut bien sûr l'utiliser).
espie
Le #26473810
In article Fabrice
Bonjour,
je cherche a récuperer les inputs d'une page internet.
#!/usr/bin/perl
use HTTP::Cookies;
use HTML::Form;
use LWP::UserAgent;

Pourquoi t'embetes-tu a tout faire a la main ? utilise direcement
WWW::Mechanize, il fait a peu pres tout pour toi.
Marc SCHAEFER
Le #26473809
Marc Espie
Pourquoi t'embetes-tu a tout faire a la main ? utilise direcement
WWW::Mechanize, il fait a peu pres tout pour toi.

Ou Mojo::UserAgent, petit exemple non relié au problème:
my $ua = new Mojo::UserAgent();
my %truc $ua->get($base_url)->res->dom->find('td > a')
->grep(sub { $_->attr('href') =~ /google.com/ })
->map(sub { $_->attr('href') => length($_->attr('href')) });
# truc contiendra un tableau associatif
# url => longueur d'URL
# pour tous les URLs attributs href de tous les éléments a dont l'URL
# est google.com et le parent est un élément td dans le document pointé
# par l'URL $base_url # (dans grep et map et foreach, par défaut dans Perl,
# $_ est la variable de contrôle)
Publicité
Poster une réponse
Anonyme