Проблемы с загрузкой файлов - PullRequest
1 голос
/ 07 июля 2010

Я пытаюсь загрузить файл с сайта, используя perl.Я решил не использовать wget, чтобы научиться делать это таким образом.Я не уверен, что моя страница не соединяется или что-то не так в моем синтаксисе.Кроме того, как лучше всего проверить, если вы получаете подключение к странице.

#!/usr/bin/perl -w
use strict;
use LWP;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
$mech->credentials( '********' , '********'); # if you do need to supply server and realms use credentials like in [LWP doc][2]
$mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/');
$mech->success();
if (!$mech->success()) {
    print "cannot connect to page\n";
    exit;
}
$mech->follow_link( n => 8);
$mech->save_content('C:/Users/********/Desktop/');

1 Ответ

3 голосов
/ 07 июля 2010

Извините, но почти все не так.

  • Вы используете смесь LWP::UserAgent и WWW::Mechanize неправильно. Вы не можете сделать $mech->follow_link(), если используете $browser->get(), так как вы смешиваете функцию из 2-х модулей. $mech не знаю, что вы сделали запрос.
  • Аргументы в учетные данные не годятся, см. Документ

Скорее всего, вы хотите сделать что-то вроде этого:

use WWW::Mechanize;
my $mech = WWW::Mechanize->new();

$mech->credentials( '************' , '*************'); # if you do need to supply server and realms use credentials like in LWP doc
$mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/');
$mech->follow_link( n => 8);

Вы можете проверить результат get () и follow_link (), проверив $mech->success() result if (!$mech->success()) { warn "error"; ... }
После перехода по ссылке-> данные доступны с помощью $mech->content(), если вы хотите сохранить их в файле, используйте $mech->save_content('/path/to/a/file')

Полный код может быть:

use strict;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();

$mech->credentials( '************' , '*************'); #
$mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/');
die "Error: failled to load the web page" if (!$mech->success());
$mech->follow_link( n => 8);
die "Error: failled to download content" if (!$mech->success());
$mech->save_content('/tmp/mydownloadedfile')
...