Comment puis-je télécharger un fichier à l'aide de Perl?
Je suis à court de Perl sur Windows XP, et j'ai besoin de télécharger un fichier à partir de l'URL http://marinetraffic2.aegean.gr/ais/getkml.aspx.
Comment dois-je faire? J'ai tenté à l'aide de WWW::Mechanize, mais je ne peux pas obtenir ma tête autour de lui.
C'est le code que j'ai utilisé:
my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $mech = WWW::Mechanize->new;
$mech->get($url);
- Pouvez-vous s'il vous plaît poster un peu de code pour montrer ce que vous avez essayé de WWW::Mechanize et indiquer ce qui ne fonctionne pas comme prévu?
- BTW, j'voir page vide sur cette URL
- C'est le code que j'ai utilisé: my $url = 'marinetraffic2.de la mer egée.gr/ais/getkml.aspx'; my $mech = WWW::Mechanize->new; $mech->get($url); Oui, c'est en fait une page vide qui doit télécharger un .fichier kmz. Vous devez être persistant cause, à certains moments, il ne télécharge pas.
Vous devez vous connecter pour publier un commentaire.
J'utiliserais LWP::Simple pour cela.
J'ai utilisé Fichier::Fetch que c'est un core module Perl (je n'ai pas besoin d'installer des paquets supplémentaires) et essayer un certain nombre de différentes façons de télécharger un fichier en fonction de ce qui est installé sur le système.
Notez que ce module sera en fait essayez d'utiliser LWP d'abord si elle est installée...
Linux 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
(tv replay serveur),$ff->fetch()
renvoie une erreur (différente de zéro), mais$ff->error(1)
produit pas de diagnostics.strace -f
montre aucune tentative pour récupérer le fichier spécifié. LeLWP::Simple
approche décrite dans stackoverflow.com/a/4670489/5025060 ne fonctionne pas.Si le téléchargement de ce fichier est tout ce que vous faites, vous feriez mieux d'aller avec @davorg de réponse.
Si cela fait partie d'un plus grand processus, vous pouvez accéder à la ressource que vous avez téléchargé comme une chaîne de caractères à l'aide de la méthode
content
sur votre$mech
objet.C'est en fait s'enroule autour de la
LWP::UserAgent->get
.Plus de détails peuvent être trouvés à WWW::Mechanize docs page.