2011-01-12 11 views
27

मैं विंडोज एक्सपी पर पर्ल चला रहा हूं, और मुझे यूआरएल http://marinetraffic2.aegean.gr/ais/getkml.aspx से एक फ़ाइल डाउनलोड करने की आवश्यकता है।मैं पर्ल का उपयोग कर फ़ाइल कैसे डाउनलोड करूं?

मुझे यह कैसे करना चाहिए? मैंने WWW :: मैकेनाइज का उपयोग करने का प्रयास किया है, लेकिन मैं इसके चारों ओर अपना सिर नहीं प्राप्त कर सकता।

my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx'; 
my $mech = WWW::Mechanize->new; 
$mech->get($url); 
+0

आप कुछ कोड पोस्ट कृपया यह जान सकें कि आप WWW :: मशीनीकरण के साथ की कोशिश की और संकेत मिलता है क्या नहीं था ' उम्मीद के अनुसार काम नहीं करते? – DVK

+0

बीटीडब्ल्यू, मुझे उस यूआरएल पर खाली पृष्ठ दिखाई देता है – DVK

+0

यह वह कोड है जिसका मैंने उपयोग किया: मेरा $ url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx'; मेरा $ mech = WWW :: मैकेनाइजेशन-> नया; $ mech-> प्राप्त करें ($ url); हाँ यह वास्तव में एक खाली पृष्ठ है जो एक .kmz फ़ाइल डाउनलोड करना चाहिए। आपको लगातार डाउनलोड करना पड़ता है क्योंकि यह डाउनलोड नहीं होता है। – Sfairas

उत्तर

56

मैं इसके लिए LWP::Simple का उपयोग करेंगे:

इस कोड को मैं प्रयोग किया जाता है।

#!/usr/bin/perl 

use strict; 
use warnings; 

use LWP::Simple; 

my $url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx'; 
my $file = 'data.kml'; 

getstore($url, $file); 
+0

मैंने एलडब्लूपी सरल और डब्ल्यूडब्ल्यूडब्ल्यू मशीनी दोनों की कोशिश की लेकिन मुझे स्टेटस रीड असफल हो रहा है: सहकर्मी द्वारा कनेक्शन रीसेट। यूआरएल - http://27.251.47.106/BLal/Design/OPD/LabReport_Interface.aspx?TestID=LSHHI472&PID=LSHHI643736&LedgerTransactionNo=371411000582 – Gaurav

+0

शायद इसे एक नए प्रश्न के रूप में उठाने के लिए सबसे अच्छा है। –

4

यदि फ़ाइल डाउनलोड करना वास्तव में आप वास्तव में करते हैं, तो आप बेहतर @ davorg के उत्तर के साथ जाते हैं।

यदि यह एक बड़ी प्रक्रिया का हिस्सा है, तो आप अपने $mech ऑब्जेक्ट पर विधि content का उपयोग करके स्ट्रिंग के रूप में डाउनलोड किए गए संसाधन को एक्सेस करते हैं।

4
use WWW::Mechanize; 

my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx'; 
my $local_file_name = 'getkml.aspx'; 

my $mech = WWW::Mechanize->new; 

$mech->get($url, ":content_file" => $local_file_name); 

यह वास्तव में LWP::UserAgent->get के आसपास लपेटता है। यहाँ अधिक विवरण: http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm# $ mech-> get ($ uri)

16

मैं File::Fetch इस्तेमाल किया क्योंकि यह एक कोर पर्ल मॉड्यूल (मैं किसी भी अतिरिक्त संकुल स्थापित करने की आवश्यकता नहीं किया था) है और विभिन्न के एक नंबर की कोशिश करेंगे सिस्टम पर स्थापित होने के आधार पर फ़ाइल डाउनलोड करने के तरीके।

use File::Fetch; 
my $url = 'http://www.example.com/file.txt'; 
my $ff = File::Fetch->new(uri => $url); 
my $file = $ff->fetch() or die $ff->error; 

ध्यान दें कि इस मॉड्यूल वास्तव में LWP उपयोग करने के लिए पहले ही यह स्थापित किया गया है की कोशिश करेंगे ...

संबंधित मुद्दे