2

これが私の最後の質問です。$mech->follow_linkを使用してファイルをダウンロードしようとしています。何らかの理由で、保存されたファイルは私が最初にプルアップしたページであり、私がたどりたいリンクではありません。これは、リンクからファイルをダウンロードする正しい方法ですか?wgetは使いたくない。

    #!/usr/bin/perl -w
    use strict;
    use LWP;
    use WWW::Mechanize;
    my $now_string = localtime;
    my $mech = WWW::Mechanize->new();
    my $filename = join(' ', split(/\W++/, $now_string, -1));
    $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/') or die "Error: failed to load the web page";
$mech->follow_link( url_regex => qr/MESH/i ) or die "Error: failed to download content";
$mech->save_content("$filename.kmz");
4

3 に答える 3

3

試す手順

  1. まず、からコンテンツを印刷してget、有効なHTMLページに到達していることを確認します
  2. 移動するリンクが「MESH」と呼ばれる3番目のリンクであることを確認してください(大文字と小文字が区別されますか?)
  3. 2番目のコンテンツを印刷しますget
  4. ファイル名を印刷して、整形式であることを確認します
  5. ファイルが正常に作成されたことを確認します

追加

  • どちらの場合でも、それが機能するか、死ぬかを除いて、あなたは必要ありません

#!/usr/bin/perl -w

use strict;
use WWW::Mechanize;

   sub main{
   
      my $url    =  qq(http://www.kmzlinks.com);
      my $dest   =  qq($ENV{HOME}/Desktop/destfile.kmz);
      
      my $mech   =  WWW::Mechanize->new(autocheck => 1);
      
      # if needed, pass your credentials before this call
      $mech->get($url);
      die "Couldn't fetch page" unless $mech->success;
      
      # find all the links that have urls to kmz files
      my @links  =  $mech->find_all_links( url_regex => qr/(?:\.|%2E)kmz$/i );
      
      foreach my $link (@links){               # (loop example)

         # use absolute URL path of the link to download file to destination
         $mech->get($link->url_abs, ':content_file' => $dest);
     
         last;                                 # only need one (for testing)
      }     
   }
   
   main();
于 2010-07-07T19:37:57.193 に答える
1

'MESH'という3番目のリンクが必要ですか?

于 2010-07-07T19:26:35.927 に答える
-1

に変更ifunlessます。

于 2010-07-07T18:58:51.683 に答える