Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recuperer les inputs d'un formulaire

Aucune réponse
Avatar
Fabrice
Bonjour,

je cherche a r=C3=A9cuperer les inputs d'une page internet.

#!/usr/bin/perl

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



print "Content-type: text/html\n\n";

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


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

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

# r=C3=A9cup=C3=A8re la r=C3=A9ponse
my $res =3D $ua->request($req);

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

print @inputs;


et j'ai comme r=C3=A9sultat : HTML::Form::TextInput=3DHASH(0x3226310)HTML::=
Form::TextInput=3DHASH(0x3226370)HTML::Form::TextInput=3DHASH(0x32259c8)HTM=
L::Form::TextInput=3DHASH(0x32258c0)HTML::Form::SubmitInput=3DHASH(0x322653=
8)HTML::Form::SubmitInput=3DHASH(0x31ca3e8)HTML::Form::TextInput=3DHASH(0x3=
225e18)

une id=C3=A9e du pourquoi ?

D'avance merci

Fabrice

3 réponses

Avatar
Marc SCHAEFER
Fabrice wrote:
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).
Avatar
espie
In article ,
Fabrice wrote:
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.
Avatar
Marc SCHAEFER
Marc Espie wrote:
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)