2016-08-12 7 views
1

私はwgetを使用して、ウェブサイトからすべてのjpegをダウンロードしています。wget、再帰的にすべてのjpegをダウンロードするのは、ウェブサイトのホームページでのみです。

私は多くのことを検索し、これが道でなければなりません:-A jpg

wget -r -nd -A jpg "http://www.hotelninfea.com" 

このはず再帰的-rダウンロードファイルのJPEGファイルとWebサイトのディレクトリツリーに-nd

ランニングを再作成せずに、1つのディレクトリにすべてのファイルを保存しますこのコマンドは、すべてのWebサイトのjpeg全体ではなく、Webサイトのホームページからjpegのみをダウンロードします。

jpegファイルにはさまざまな拡張子(jpg、jpeg)がある可能性があることは知っていますが、そうではありません。また、robots.txtの制限もありません。

私は前のコマンドからのフィルタを削除した場合、予想通り、それはこれがLubuntu 16.04 64ビットに起こっている

wget -r -nd "http://www.hotelninfea.com" 

、wgetの1.17.1

が、これはバグですか、私は何かを誤解しています動作します?

答えて

0

ewcz anwerは私に正しい方法を指摘しました。--accept acclistパラメータには二重の役割があり、ファイル保存のルールとリンクをたどるルールを定義します。深くthe manualを読む

は、私が「--adjust-拡張子」が指定されている場合は、ローカルのファイル名は「.htmlを」それに添付されている可能性がある。この

を見つけました。 Wgetが '-E -A.php'で呼び出された場合、 'index.php'などのファイル名が一致しますが、ダウンロード時には 'index.php.html'という名前が付けられます。ファイルは削除されます。

だから、だから私は最も堅牢なソリューションはbashスクリプトであろうと考えて

のようなもの この

wget -r -nd -E -A jpg,php,asp "http://www.hotelninfea.com" 

しかし、もちろんウェブマスターがcustom extensions

を使用している可能性を行うことができます

WEBSITE="http://www.hotelninfea.com" 
DEST_DIR="." 

image_urls=`wget -nd --spider -r "$WEBSITE" 2>&1 | grep '^--' | awk '{ print $3 }' | grep -i '\.\(jpeg\|jpg\)'` 

for image_url in $image_urls; do 
    DESTFILE="$DEST_DIR/$RANDOM.jpg" 
    wget "$image_url" -O "$DESTFILE" 
done 

--spider wgetはダウンロードされませんページは、そこにいることを確認するだけです。
$RANDOMは、オペレーティングシステムに乱数を問い合わせます。

1

あなたが言及しているメインページには、他のページへのリンクがフォームhttp://.../something.phpに含まれている、つまり明示的な拡張子があるため、これが起こっていると思われます。次に、オプション-A jpegには、トラバーサルプロセスからそれらのページを削除する "副作用"があります。

wget -r -nd -A jpg,jpeg,php "http://www.hotelninfea.com" && rm -f *.php 

すなわち、唯一の必要な余分なページをダウンロードして、wgetが正常に終了した場合、それらを削除するには:

おそらく、この特定のケースでは少し汚れてこの問題を回避するには、このようなものになるだろう。

関連する問題