そういう趣旨でしたか。分かりました。
私はwgetオンリーなので他のツールは知らないのですが、ネットでの情報と実験を合わせて学習ししていきました。とにかく実験は大切です。
wget付属のマニュアルのほかでは「このサイトを読めばいい」みたいなのがあるといいのですが今となってはよく覚えていません。
wgetのバージョンによってサポートされない機能があったり挙動が変わるのもありました。
業務で使うものはwgetのソースからダウンロードして少し調整して自分でコンパイルするやりかたをとっていました。業務では細かなことが問題になったりします。
(以下は最新のwgetではOKなのかも知れません。あくまで少し前でのことです)
たとえば、
http://DOMAIN/DIR/
のようなURLが指定された場合、ファイル名が省略されているのでクローラに限らずブラウザなどはいったんエラー(404)を引き取ってから改めて、
http://DOMAIN/DIR/index.htm
http://DOMAIN/DIR/index.html
などリトライして取得します。当時のwgetはデフォルトでは "/止めURL" に対して index.htm を強制的にローカルファイル生成していました。このあと、業務のサイト内検索で検索結果のページにURLを付加するときに index.htm を使うことになり、収集ターゲットサイトが "/止めURL" に対して index.html で統一している場合には検索結果から飛べないことになります。(多くのサイトでは index.html が多い)
このため、wgetをソース修正して、デフォルトの/止めURLの生成を index.html にする調整をおこないました。
その他、手持ちメモからざっと書いてみます。
--timeout オプションが古いwgetでは効かない
同じく、このデフォルトが長すぎるため(60秒とか)、大規模サイトで異常があったときに、1ページ毎に60秒待つことになりちっとも終わらないので実務ではこんなに長いのは駄目、
httpsのサイトから収集するのに、普通にクローリングかけるのだと認証エラーになるので --no-check-certificate を付加する(認証を甘くする)とか、あるいはそもそもSSL使わずにあえてhttpで取得しに行く(wgetのソースからのメイクが必要)とか、
ディレクトリ除外というのがあります。たとえば i-mode用のコンテンツやスマホ用コンテンツが別にあるとき、そこまで取りに行くと重複が多くなってしまうので除外したいわけです。その除外ディレクトリの指定で、たとえば、
--exclude-directories=mind
とやったときに、mind/ のほか mindsearch/ は除外されるのか?とか、このあたりはやってみないと分からないことがあって、しかもwgetのバージョンによって挙動が違うことがありました。
ファイル名の除外では、ちまたのwgetの解説ではあいまいなことが多かったですね。
たとえば、イメージファイルを取らないようにするため、
-R
というオプションを使うことがありますが、-R .jpg をサンプルとするサイトがあったり、-R jpg をサンプルとするサイトがあったりしてまちまちでした。結果的にはどちらでもOKですが、はっきりした理由は「末尾一致」だっということで、厳密には前者が正しいです。
あとは、解説書などでは、
--wait
オプションを指定しないものが多いのですが、これで全ページダウロードするとき待ち時間を入れないと絨毯爆撃になってしまいターゲットサイトから怒られるので --wait=2 とかは必須になります。もっというと、古い wget では 1.5 秒という小数による指定ができませんでした。
逆にごく初歩的な知識としては、
-l N (どこまで深く取得するかの指定)
で N=1 はどこまで取得するのか実験して確認するとか(n=1は起点およびその直下まで)、
こんな感じでしょうか。