Accéder à une page WEB en PERL
-
Bonjour,
Je voudrais, dans un script PERL accéder à une page WEB, en récupérer le source, puis en "mouliner" le contenu à ma façon.
C'est en fait quelque chose que je fais assez régulièrement grâce au module LWP d'une façon simple, efficace et qui convient tout à fait à mes besoins , avec des scripts du style :
use LWP::Simple qw(get);
my $html_EG = " URL ";
my $htmlEG = get($html_EG);
Et (en principe !!) ... $htmlEG contient tout ce que je veux.
Sauf que, aujourd'hui, avec cet URL : https://foe-data.ovh/world/fr13/classementeg
le script me renvoie systématiquement l'erreur suivante :
++++++++
Page non disponible
La page https://foe-data.ovh/world/fr13/classementeg n'a pu Ûtre tÚlÚchargÚe - erreur Bad file descriptor
++++++++
et, je ne m'en sors pas ... Serait-ce le tiret dans l'URL qui provoque cette erreur ?
Merci d'avance pour vos réponses !
Windows / Firefox 104.0
- Lwp::protocol::https
- Supprimer une page word - Guide
- Web office - Guide
- Comment traduire une page web - Guide
- Capturer une page web complète - Guide
- Créer une page web - Guide
2 réponses
Désolé, je ne vois ton message que maintenant.
Le tiret ne devrait poser absolument aucun problème.
Dans les distributions récentes de libwww-perl, le support de https nécessite l'installation du module séparé LWP::Protocol::https
https://metacpan.org/release/ETHER/libwww-perl-6.36/source/README.SSL
As-tu installé ce module depuis CPAN ?
Bonjour,
A mon tour d'avoir longuement trainé pour te répondre !
Ayant pour finir trouvé la solution, je la poste telle quelle
En fait j'ai testé ta proposition, mais cela n'a rien changé. J'ai encore beaucoup cherché et suis maintenant sur une autre piste.
Ce pourrait être un problème de certificat, non valide ? non reconnu ?
Si cela s'avère exact, il faudrait que je bypasse la validation SSL (bien que ce soit peu recommandé, mais bon ...)
Je viens de trouver .....
Il faut forcer la variable verify_hostname à 0
use LWP::UserAgent;
use HTTP::Request::Common qw(GET);
my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 }, );
my $req_EG = GET 'https://www.forge-db.com/fr/fr13/guilds/?server=fr13&world=Noarsil';
my $res_EG = $ua->request($req_EG);
Cordialement