wget再帰ダウンロード、ただしすべてのリンクをたどりたくない


10

wgetを使用してWebサイトをミラーリングしようとしていますが、大量のファイルをダウンロードしたく--rejectないので、すべてのファイルを保存しないようにwgetのオプションを使用しています。ただし、wgetは引き続きすべてのファイルをダウンロードし、拒否オプションと一致する場合は後でファイルを削除します。

シェルのワイルドカードと一致する場合に、特定のリンクをたどらないようにwgetに指示する方法はありますか?wgetがこれを実行できない場合、これを実行できる他の一般的なLinuxコマンドはありますか?


3
コマンド全体を投稿してください。トラブルシューティングがはるかに簡単になります。
ジョセフ・カーン

回答:


9

IMOを備えた、より柔軟で直感的な包含 /除外ロジックを備えたHTTrackを試してみることもできます。このようなもの...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

ルールは順番に適用され、以前のルールを上書きします...

  1. すべてを除外
  2. ただし、https://example.com/images/を含めてください *
  3. ただし、SWFで終わるものはすべて除外します

更新されたURLでCSS、画像などをダウンロードしますか?
ブランディッツィ


1

「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.

--rejectオプションは引用符で囲みます。ファイルがダウンロードされた後、wgetがファイルを削除するため、が正しいファイルと一致していることがわかります。そもそもファイルのダウンロードを停止したいだけです
Rory

これらのhtm(l)ファイルはありますか?マニュアルによると、これらは何があってもダウンロードされます。
カイル・ブラント

はい。拒否したいファイルはHTMLファイルです。どうしてもダウンロードされることは知っています。それを防ぐ方法はありますか?
Rory、

1

-l NUMBERオプションを使用して、再帰のレベルを制限できます(特定の正規表現パターンに従わない場合)。

「2」のレベルは、index.html、そのサブサイト/画像/ etc、およびサブサイト上のリンクをダウンロードします。


いいえ、この場合は役に立ちません
Rory

1

どのようにwgetを使用しますか?このように使用してみてください:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

このコマンドは、gif、jpg、swfファイルを無視します。


Rory McCannが拒否したいファイルはHTMLファイルですが、他のHTMLファイルを保持したいので、この構文は彼の質問には適用されません。
ロイスウィリアムズ

1

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を使用するほうがよい

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.