Wgetを使用してウェブサイトをミラーリングしようとしていますが、大量のファイルをダウンロードしたくないので、すべてのファイルを保存しないようにwgetの--reject
オプションを使用しています。ただし、wgetは引き続きすべてのファイルをダウンロードし、拒否オプションと一致する場合は後でファイルを削除します。
シェルのワイルドカードと一致する場合に、特定のリンクをたどらないようにwgetに指示する方法はありますか? wgetがこれを実行できない場合、これを実行できる他の一般的なLinuxコマンドはありますか?
Wgetではこれは不可能のようです
また、IMOより柔軟で直感的な包含/除外ロジックを持つ HTTrack を試すこともできます。このようなもの...
httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"
ルールは順番に適用され、以前のルールを上書きします...
1つの回避策は、プロキシサーバーを介してwgetを実行することです。特定のパターンを許可しないようにプロキシを設定します。これは、そもそもwgetがそれらをダウンロードすることをブロックします。
wgetは、-Rパターンに一致するファイルをダウンロードして削除します。拡張子やファイル名の一部だけでなく、パターンにも一致します。ただし、wgetが最初にダウンロードされ、後で削除されることを妨げるものではありません。
httrackにはいくつかの素晴らしい機能がありますが、私の経験では、「ファイル」を保存する方法は少し変わっているかもしれません。 httrackがindex.asp?Type = BASIC&PAGEID = 2234234に遭遇した場合
それは保存できますが、クエリの一部を保存するように指示する必要があります
例えば。 %h%p /%n%[TYPE:@TYPE = ::]%[PAGEID:PAGEID = ::]。%t
@は疑問符のプレースホルダーです。後でファイルの名前を変更するか、代わりに疑問符をエスケープできますか?問題は、最初に「.html」がなかったURIの末尾に。%tが「.html」を追加することです。これを削除すると、httrackがダウンロードする画像にファイル拡張子が付きません。
Wget IMHOを使用するほうがよい
どのようにwgetを使用しますか?このように使用してみてください:
wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/
このコマンドは、gif、jpg、swfファイルを無視します。
(特定の正規表現パターンに従わない場合)-l NUMBER
オプションを使用すると、再帰のレベルを制限できます。
「2」のレベルは、index.html、そのサブサイト/画像/ etc、およびサブサイト上のリンクをダウンロードします。
「man wget」の--rejectセクションの下:
「ワイルドカード文字*、?、[または]のいずれかがacclistまたはrejlistの要素にある場合、それはサフィックスではなくパターンとして扱われることに注意してください。」
これを行っている場合、使用しているパターンの例と、一致させる必要があると考えるものを示すとよいでしょうが、そうではありません。あなたは彼らが一致していると言いますが、あなたは確かですか?
また、このリストを引用符で囲んでください。シェルが引数をwgetに渡す前に、これらのワイルドカードを展開しないでください。
システムにバージョン1.12がない場合でも、マニュアルの「ファイルの種類」セクションを読んでください こちら 。変更ログによると、メンテナはいくつかの警告を追加しました:
* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.