900個のURLのリストがあります。各ページには1つの画像が含まれています。一部の画像が重複しています(URLは同じです)。 900枚の写真をダウンロードしたいのですが、含む繰り返す
wgetを使用して、すべてのページと埋め込み画像をダウンロードできます(他のすべてのファイル形式は無視されます)。しかし、wgetは以前にダウンロードした画像を「無視」しているようです。 900ページがありますが、画像は約850枚だけです。
(どうやって)wgetに重複するアイテムもダウンロードするように指示できますか?ファイル名に_1
、、、...を追加できます。_2
私のwgetコマンド:
wget --input-file=urls.txt --output-file=log.txt --wait 1 --random-wait --page-requisites --exclude-domains code.jquery.com --span-hosts --reject thumbnail*.png -P downloadfolder
ベストアンサー1
私の考えでは、あなたの問題は--page-requisites
。重複したアイテムを識別して再ダウンロードするのを防ぐと思います。これは一般的にあなたが望むものです。次のように各URLに対してwgetを1回呼び出し、毎回別のフォルダにダウンロードすることでこの問題を解決できます。
#!/bin/bash
let i=0
while IFS=$'\n' read url; do
let i++;
wget -nv -P $i --page-requisites "$url";
done < urls.txt
ただし、各ファイルに含まれる画像は1つだけ必要です。これにより、トリックを実行できます。
wget -i urls.txt -q -O - | ...extract image URLs... | wget -nv -i -
HTMLからURLを抽出することは、逐語的なURLを見つけるのと同じくらい簡単です。
grep -Eo 'http://host/abc/[^"]+.jpg'
またはもう少し努力が必要です。 900個のURLが同様のHTMLを指している場合は問題になりません。とにかく、名前が競合するファイルに番号を付けます。