wget / curlを使用して、特定のWebページ上の.zipファイルへのすべてのリンクをダウンロードするにはどうすればよいですか?


83

ページには、ダウンロードしたい一連の.zipファイルへのリンクが含まれています。私はこれがwgetとcurlによって実行できることを知っています。それはどのように行われますか?

回答:


125

コマンドは次のとおりです。

wget -r -np -l 1 -A zip http://example.com/download/

オプションの意味:

-r,  --recursive          specify recursive download.
-np, --no-parent          don't ascend to the parent directory.
-l,  --level=NUMBER       maximum recursion depth (inf or 0 for infinite).
-A,  --accept=LIST        comma-separated list of accepted extensions.

16
-ndあなたが余分なディレクトリが(つまり、すべてのファイルがルートフォルダにあります)を作成したくない場合(NOのディレクトリ)フラグが便利です。
スティーブデイビス

1
このソリューションを微調整して、指定されたページからさらに深くするにはどうすればよいですか?-l 20を試しましたが、wgetがすぐに停止します。
レンチ2015年

2
ファイルが開始URLと同じディレクトリにない場合は、を削除する必要がある場合があります-np。それらが別のホスト上にある場合は、が必要になり--span-hostます。
ダン

84

上記の解決策は私にはうまくいきません。私にとってはこれだけが機能します:

wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off [url of website]

オプションの意味:

-r            recursive
-l1           maximum recursion depth (1=use only this directory)
-H            span hosts (visit other hosts in the recursion)
-t1           Number of retries
-nd           Don't make new directories, put downloaded files in this one
-N            turn on timestamping
-A.mp3        download only mp3s
-erobots=off  execute "robots.off" as if it were a part of .wgetrc


はい、ありがとう!私はそれがどこから来たのか覚えていませんでした、それは私のスクリプトにあるだけです。
K.-Michael Aye 2014

申し訳ありません。新しい質問をしてください!;)
K.-Michael Aye 2015

1
-Hスイッチの+1 。これが、最初の回答(SOを検討する前に試したもの)が機能しなかった理由です。
アレックス

これで「長いオプションへの必須の引数は短いオプションにも必須です」というエラーが発生します。:(
フランソワ・ルブラン

6

私が使用するいくつかの並列魔法を使用する他のシナリオの場合:

curl [url] | grep -i [filending] | sed -n 's/.*href="\([^"]*\).*/\1/p' |  parallel -N5 wget -
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.