Bonjour à tous,
Je suis parvenu en utilisant le module UserAgent à m'identifier sur une page web et à rappatrier le contenu de la page sur mon disque.
Mais je voudrais aller un peu plus loin. Après avoir parsé le code HTML et identifié les fichiers ressources utilisés par la page web, je souhaiterai télécharger une partie de ces fichiers ressources (gif, bmp, png, css, ...) en utilisant la méthode GET à la suite de l'identification.
Si ça ne pose pas de problème avec les fichiers de type texte, en faisant un "print LOCAL $response->content" par exemple, en revanche je suis bloqué pour les autres types de fichiers (binaires, etc...).
Avec le code ci-dessous, j'ai apparemment réussi à copier un fichier gif sur mon disque, sauf que lorsque je le visualise il ne correspond pas à une ressource de la page et l'image semble incomplète, bien que le fichier s'ouvre dans l'explorateur XP.
Ma question se résume donc à "Comment copier un fichier quelconque situé sur un serveur web, sur mon disque dur, en utilisant la méthode GET ?"
Merci d'avance à tous ceux qui voudrons bien m'aider.
Krys006
use strict;
use LWP::UserAgent;
# Initialisation des variables pour l'autentification
my ($login, $mdp, $url, $reponse1, $reponse2, $form);
$login = 'mon_identifiant';
$mdp = 'mon_mot_de_passe';
$url = 'http://www.adresse_site_web';
# Initialisation de l'agent
my $ua = LWP::UserAgent->new(
agent => 'Mozilla/5.0 (compatible; MISE 6.0)' );
# Chemin relatif du fichier à télécharger
my $fichier_a_telecharger = "/Rep_Images/Image.gif";
# Chemin du fichier à télécharger sur le serveur
my $chem_src ="http://www.adresse_site_web".$fichier_a_telecharger;
# Dans le but d'enregistrer le fichier sur mon disque dur
my $chem_local = ".".$fichiers_a_telecharger;
# Il faut peur-être ajouter un protocole pour télécharger les fichiers ressources ?
$ua->protocols_allowed( [ 'http', 'https', 'file']);
my $req_src = HTTP::Request->new( GET => $chem_src);
# Le UserAgent renvoit un objet HTTP::Response
my $rep_src = $ua->request($req_src);
open(LOCAL, "> C:\/mon_chemin_local\/Image.gif");
print LOCAL $rep_src->content;
close(LOCAL);
Partager