質問: curlまたはwgetを使用して画像のみをダウンロードしますか? 更新しました: this bashスクリプトを使用すると、拡張子が.jpgのgifファイルがある問題が修正されます。urlが次の形式を使用しているフォーラムから画像をダウンロードしようとしています。http://www.someforum.com/attachment.php&id=xxxwgetを使用してこれらの画像を取得するbashスクリプトを作成しました。for i in {1..10} do wget --accept .jpg,.jpeg --cookies=on --load-cookies=cookies.txt -p "http://www.someforum.com/attachment.php&id=${i}" -o "image${i}.jpg" done それは動作し、画像をダウンロードします。ただし、画像がない場合でも、結果のhtmlをダウンロードして、xx.jpgに詰め込みます。curlも同じことをします:for i in {1..10} do curl --cookie cookies.txt "http://www.someforum.com/attachment.php&id=${i}" -o "image${i}.jpg" done /image/*以外の結果を拒否する方法はありますか?今のところ、画像はjpegであると想定していますが、mime/typeを検出し、適切なファイル名を使用するとよいでしょう。最後に、画像が見つからない場合、wgetは500の応答コードを提供します。200の応答コードをフィルタリングできれば、解決策が得られる可能性があります。bash、ruby、python回答は受け入れられます。
回答: wgetは、エラー時にゼロ以外の終了コードを返します。リモートが4xxまたは5xxステータスを発行した場合は、特に終了ステータス== 8に設定されます。したがって、wgetが正常に終了しない場合は、bashループを変更してファイルのリンクを解除できます。for i in {1..10} do wget --accept .jpg,.jpeg --cookies=on --load-cookies=cookies.txt -p "http://www.someforum.com/attachment.php&id=${i}" -o "image${i}.jpg" || rm "image${i}.jpg" done 同様に、curlには--failオプションがあり、ファイルを保存せず、httpステータスが> = 400の場合に終了ステータス22を返します。