- ベストアンサー
ローカルPC上に対象ファイルを自動保存
Web上にある保存用ファイル (通常、そのハイパーリンクを右クリックして、 「対象をファイルに保存」とするタイプのもの。 テキストファイル以外にもバイナリファイル等もある) をPerlスクリプトを使って、 ローカルPC上へ指定ファイル名で保存させる方法 があれば教えてください。 例えば、(みようみまねですが) 次のようなスクリプトが動いてくれたらと思います。 よろしくお願いします。 ------------------------------------------ #!perl use LWP::Simple; if(@ARGV < 2){ print "Usage: $0 http-addr filename\n"; exit(0); } my $URL = $ARGV[0]; my $SAVEFILE = $ARGV[1]; my $target = get $URL; open(OUT,">$SAVEFILE") || die "$SAVENAME $! stopped"; print OUT $target; close(OUT); 以上、よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
希望とは違うかもしれないけれども、 UNIX だったらwget が使える。 (windows で、)LWP がインストールされていれば lwp-download コマンドがインストールされていて これが質問者の作りたいスクリプトと同じ機能を有する lwp-download url savefilename で実行。
その他の回答 (5)
原因がわからないことには何も出来ないので、 my $target=get $URL; if(!$target){ die "get error $!"; } みたいな感じでエラーの内容を調べてみてはいかがでしょうか? http://がついてなかったら、$!の内容も空になるようですが。
補足
なるほど!、$!で状況が分かるのですね。 やってみます。ありがとうございます。
- bgbg
- ベストアンサー率53% (94/175)
入力するURLの頭に"http://"はついていますか?
お礼
はい。付いています。 下の方への回答でも記しましたが、 lwp-download.bat を使うと、指定ファイルの保存ができましたので、URLの指定としては間違っていないと思っています。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>サイズが0のファイルが出来るだけでした。 #2>$targetをprintで標準出力させてみても、何も表示されませんでした #3>ieのGUIインタフェースで右クリック→対象をファイルに保存、とすると、中身のあるファイルがダウンロードできています) 変ですね、 なんかブロックされているのかもしれませんね。 もし、問題なければ、そのダウンロード先のURLを補足していただけませんか?
お礼
lwp-download.bat を使うと、画像でも取れました! ありがとうございました。 上記、自作スクリプトの方は、まだ理由が分かりません。 ターゲットのURLはローカルのものなので、こちらへ示しても意味が無いので、代替えの場所を探してみます。 とりいそぎ、ご連絡が遅れました。ありがとうございました。
> ローカルPC上へ指定ファイル名で保存させる方法 保存する方法ではなく、保存”させる”方法、、、、ですか? このスクリプトは、ほかのサーバーにあるファイルを、Perlでダウンロード(保存)するものですが、、、
補足
紛らわしい表現ですみません。 指定したURLにあるダウンロード用のファイルを 指定したローカルPC上のファイルとしてダウンロード保存したい ということを言っておりました。 上記のスクリプトでは、空のファイルしか出来ないのですが、(そもそものURL側には実際にファイルがあります。→ieのGUIインタフェースで右クリック→対象をファイルに保存、とすると、中身のあるファイルがダウンロードできています)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
要は、 print OUT $target; の前に binmode OUT; すればいいだけだと思う。
補足
何度もありがとうございます。 やってみたのですが、サイズが0のファイルが出来るだけでした。 (binmode OUT;をしても、しなくても) 試しに、get後の $targetをprintで標準出力させてみても、何も表示されませんでした。
補足
ご回答ありがとうございました。 C:\Perl\bin>dir : 2004/12/11 06:03 8,772 lwp-download 2005/06/06 14:00 9,190 lwp-download.bat これらのバッチファイルことだったんですね。 ちょっと試してみます。