Discussion:
recuperer les inputs d'un formulaire
(trop ancien pour répondre)
Fabrice
2018-05-03 12:56:44 UTC
Permalink
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\n\n";

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)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 ?

D'avance merci

Fabrice
Marc SCHAEFER
2018-05-03 18:02:10 UTC
Permalink
Post by Fabrice
my $form = ( HTML::Form->parse( $res->decoded_content, $base ) )[0];
@inputs = $form->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).
Marc Espie
2018-05-03 19:17:03 UTC
Permalink
Post by 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
2018-05-03 19:29:29 UTC
Permalink
Post by 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)
erikabelair
2018-07-20 20:14:30 UTC
Permalink
Post by 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;
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
Bonjour,

Je suis un particulier qui offre des prêts à l'international.
Disposant d’un capital qui servira à octroyer des prêts entre
particuliers à court et long terme allant de 1.000 à 2.000.000 Euro à
toutes personnes sérieuses
allant de 18 à 55 ans, selon de la quantité requise étant dans le
réelle besoins, le taux d’intérêt est de 3% l’an . Je le fais dans les
domaines suivants :
– Prêt financière
– Hypothèque
– Investissement de prêt
– Prêt automobile
– Consolidation de la dette
– Rachat de crédit
– Prêt personnel
– Vous êtes dans l’archive
Vous êtes fichés, interdits bancaires et vous n’avez pas la faveur des
banques ou mieux vous avez un projet et besoin de financement,
un mauvais dossier de crédit ou besoin d’argent pour payer des factures,
fonds à investir sur les entreprises. Je suis disponible à satisfaire mes
clients en une durée maximale de 3 Jours suivant la réception de
votre formulaire de demande.
Nous pouvons vous aider à financer vos projets. Si vous êtes intéressé veuille
revenir vers nous par l’intermédiaire E-mail : ***@gmail.com .

Erika BELAIR

Loading...