私がやります
wget http://services.runescape.com/m=itemdb_rs/3809_obj_Sprite.gif?id=2
そしてそれは次のファイルをダウンロードします:
3809_obj_Sprite.gif?id=2
次のように保存するにはどうすればよいですか?
2.png
wget
がこの名前を選ぶのですか?残念ながら、wget
は、指示がない限り、ダウンロードしたいものについて何も想定しません。ファイルが画像、ドキュメント、zipファイルなどであるかどうかは関係ありません。
ファイルは、URLの末尾が何であれ、最後のスラッシュからURLの末尾までのすべてとして保存されます。あなたの場合、それは.gif?id=2
です。実際のファイル拡張子(.gif
)の後の部分はURLに含まれていますが、それは HTTPクエリパラメーター です。ただし、wget
の場合は、出力ファイル名が決まります。
wget
の出力ファイル名を指定する場合は、-O
(大文字のO)オプションを追加します。
wget example.com/something.gif?id=2 -O 2.gif
これにより、デフォルトの動作が上書きされ、ファイル名が2.gif
に設定されます。 -o
(小文字)オプションは、wget
がシェルに出力する可能性のあるログメッセージの出力ファイル名を指定することに注意してください。
最後に、--content-disposition
オプションがあり、可能性があります適切なファイル名が設定されます。ただし、これは、正しいヘッダー情報の送信からダウンロードするサーバーに完全に依存します。
このオプションは、Content-Dispositionヘッダーを使用してダウンロードされたファイルの名前を記述する一部のファイルダウンロードCGIプログラムに役立ちます。
このオプションは現在も実験的なものとしてマークされているため、デフォルトでは有効になっていません。
使用しているツールのマンページを読んで、それらの動作を理解することを強くお勧めします。 man wget
と入力して、特にそれが提供するオプションを読み通してください。
また、@ Indrekが書いたことに対処するために あなたの質問へのコメント :タイプミスがあると思いますが、GIFファイルを.png
というファイルにダウンロードするつもりはありません—ただ拡張子を変更すると、notが自動的にPNGになります。 GIFとPNGは異なるエンコーディングを使用しており、これらの形式間で変換するには、あらゆる種類の画像変換ツールを使用する必要があります。ただし、この変換はロスレスであるため、「間違った」形式でファイルをダウンロードして後で変換しても害はありません。
コマンドラインオプションがあります--content-disposition
これ(Webサイトが正しいヘッダーを提供している場合)により、ファイルが正しい名前で保存されるはずです。
私のdebianスクイーズボックスには、オプションは「実験的」と書かれていますが...
これは、パスを見ると、?id = 2で終わるため、このように保存されます。ファイルを移動するか、-Oパラメーターを使用してファイル名を定義できます。
curl
には、Content-Disposition
ヘッダーからファイル名を推測するオプションもあります。
curl -OLJ http://services.runescape.com/m=itemdb_rs/3809_obj_Sprite.gif?id=2
ここに
-O
は、標準出力にフラッシュするのではなく、ファイルに保存するようにcurlに指示します-L
はリダイレクトに従うようにします-J
は、URLを分析する代わりに、Content-Disposition
による推測を可能にします
Wgetにダウンロードするように指示したファイルが実際に画像である場合、ダウンロードするのは画像です。 wgetは、正しいファイル名と拡張子をわざわざ推測することはありません。URLで見つかったものを使用します。たとえば、http://foobar.com/photo.php?n=cat.png
は、photo.php?n=cat.png
のようなものになりますが、それでも画像です。問題を解決するには、そのファイルの名前を正しい名前cat.png
に変更するだけです。ほとんどのオペレーティングシステムでは、プログラムが特定のファイルを開くことができることを知るために、正しいファイル拡張子が必要であることに注意してください。
また、curl
を使用して、リダイレクトのためにファイル名がどうなるかわからないと言うか、whathaveyo .. -L
を介してリダイレクトをたどります。正しい拡張子のファイルにパイプします。
curl -L http://links.mrgray.com/ocrtest > /files/file.png
wget
にも同様の機能があるかもしれません、dunno。