[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4. リンクの追跡

再帰的な回収で不必要なデータの回収になることを望む人はいません.ほとん どいつも,ダウンロードしたいものとWgetにたどらせたい特定のリンクのみを, ユーザは正しく覚えています.

例えば,‘fly.srk.fer.hr’から音楽のアーカイブをダウンロードしたい場 合,アーカイブの曖昧な部分の参照から生じる,全てのホームページのダウン ロードを望みません.

たどりたいリンクを正確に調整することを可能とする,いくつかのメカニズム がWgetにはあります.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4.1 ホストをまたぐ

Wgetの再帰的な回収は,通常はコマンドラインで指定されたものと異なるホス トを訪れることを拒否します.これはデフォルトで妥当です.そうしない場合, 全ての回収で,Wgetがgoogleの縮小版になり得ます.

しかし,異なるホストを訪れたり,ホストをまたぐこと(host spanning)が役に立つオプションとなる時もあります.画像が異なるサーバか ら提供されているかもしれません.三つのサーバ間の内部リンクでページ構成 されているサイトのミラーリングしているかもしれません.サーバが二つの等 価な名前を持ち,HTMLページが両方を交替しながら参照しているかもしれ ません.

あらゆるホストをまたぐ—‘-H

-H’オプションはホストをまたぐことを開始し,そのため,リンクで参照 されている全てのホストを訪れながら,Wgetの再帰的な回収が可能となります. 再帰の制限の基準が適切な深度に指定されていない限り,これらの外部のホス トは通常更に多くのホストにリンクされていて,Wgetはあなたが考えていたも のより遥かに多くのデータを終りまで吸い上げ続けます.

特定のドメインだけまたぐように制限する—‘-D

-D’オプションを用いてたどるドメインを指定でるようになり,そのため, これらのドメインに所属しているホストのみ再帰的に扱うよう制限されます. ‘-H’と組み合わせることでのみ,明確な意味があります.典型的な例とし て,‘images.server.com’からのダウンロードを許可しながら ‘www.server.com’の内容をダウンロードするなどです.

 
wget -rH -Dserver.com http://www.server.com/

カンマで分けられたリスト,例えば‘-Ddomain1.com,domain2.com’で,一 つ以上のアドレスを指定することが可能です.

特定ドメインをダウンロードから除外したままにする—‘--exclude-domains

指定から外したいドメインがある場合,‘--exclude-domains’で行うこと が可能で,それは‘-D’の引数と同じ形式を受け入れますが,リストアップ された全てのドメインを除外します.例えば, ‘sunsite.foo.edu’以外の‘foo.edu’ドメインの,全てのホストをダ ウンロードしたい場合,以下のようにすることで可能です.

 
wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu \
    http://www.foo.edu/

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4.2 ファイルの形式

ウェブから資料をダウンロードするとき,特定のファイル形式のみを回収する ように制限したいときもよくあります.例えば,GIFをダウンロードする ことに興味がある場合,ポストスクリプトのドキュメントでの負荷は嬉しいは ずが無く,逆もまたそうです.

Wgetはこの問題を扱う二つのオプションを提案します.それぞれのオプション で,短い名前,長い名前,そして‘.wgetrc’内の等価コマンドをリストアッ プします.

-A acclist
--accept acclist
accept = acclist

--accept’オプションの引数は,Wgetが再帰的な回収の間にダウンロード するファイルの,接尾子やパターンのリストです.接尾子はファイルの終りの 部分で,“通常の”文字列,例えば‘gif’や‘.jpg’から成り立ちます. パターンマッチはシェルのワイルドカードを含んでいて,例えば, ‘books*’や‘zelazny*196[0-9]*’です.

そして,‘wget -A gif,jpg’を指定すると,Wgetは‘gif’や ‘jpg’で終るファイルのみ,すなわちGIFJPEGをダウンロード します.一方,‘wget -A "zelazny*196[0-9]*"’は,‘zelazny’で始 まり,その中に1960から1969までの数字を含むファイルのみをダウンロードし ます.パターンマッチの動作方法についての記述はシェルのマニュアルを探し てください.

もちろん,任意の数の接尾子とパターンをカンマで分けたリストで組み合わせ ることや,‘-A’の引数として与えることが可能です.

-R rejlist
--reject rejlist
reject = rejlist

--reject’オプションは‘--accept’と同じように動作しますが,そ の論理は否定です.Wgetは,リストの接尾子(やパターン)にマッチするもの 以外の,全てのファイルをダウンロードします.

そして,扱いにくいMPEG.AUファイル以外の,ページ全体をダウン ロードしたい場合,‘wget -R mpg,mpeg,au’を使用できます.同様に, ‘bjork’で始まるファイル以外全てをダウンロードするため,‘wget -R "bjork*"’を使用してください.引用符はシェルによる展開を妨げるためで す.

-A’と‘-R’オプションは,回収するファイルでより良い調整を達成 するために組み合わせることができます.例えば,‘wget -A "*zelazny*" -R .ps’は,名前の一部に‘zelazny’を持ち,ポストスクリプ トではない全てのファイルをダウンロードします.

これら二つのオプションは,HTMLファイルのダウンロードで,効果が無い ことに注意してください.Wgetは全てのHTMLをリンク先を知るためにロー ドする必要があります—再帰的な回収は,そうしなければ意味がありません.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4.3 ディレクトリベースの制限

他のリンクを追う能力にもかかわらず,ファイルがあるディレクトリをもとに して回収するファイルの制限を行なうことが役に立つときも良くあります.こ れには多くの理由があります—ホームページは合理的なディレクトリ構造に組 織化されている可能性があります.また,いくつかのディレクトリ,例えば ‘/cgi-bin’や‘/dev’といったディレクトリは,無用な情報を含んで いる可能性があります.

Wgetは,これらの要求を扱うために三つの異なるオプションを提案します.そ れぞれのオプションでは,短い名前,長い名前,そして‘.wgetrc’内の等 価コマンドをリストアップしています.

-I list
--include list
include_directories = list

-I’オプションは,カンマで分けられた回収に含めるディレクトリのリス トを受け入れます.他のあらゆるディレクトリは単に無視されます.ディレク トリは絶対パスです.

そのため,‘http://host/people/bozo/’から‘/people’ディレクトリ のbozoの仲間へのリンクと‘/cgi-bin’の偽りのスクリプトのみだどってダ ウンロードしたい場合,以下のように指定できます.

 
wget -I /people,/cgi-bin http://host/people/bozo/
-X list
--exclude list
exclude_directories = list

-X’オプションは‘-I’の正反対です—これは,ダウンロードから 除外するディレクトリのリストです.例えば,Wgetで‘/cgi-bin’ ディレクトリからのものをダウンロードしたくない場合,コマンドラインで ‘-X /cgi-bin’を指定してください.

-A’/‘-R’と同様に,これら二つのオプションは,サブディレクトリ のダウンロードでより良く調整するため,組み合わせることが可能です.例え ば,‘/pub/worthless’以外の‘/pub’階層からの全てをロードしたい 場合,‘-I/pub -X/pub/worthless’を指定してください.

-np
--no-parent
no_parent = on

最も単純な,ディレクトリを制限するためによく利用される便利な方法は,開 始より上の(above)階層を参照するリンクの回収を許可しないことで,す なわち,親のディレクトリ等への上昇を許可しないことです.

--no-parent’オプション(短いものは‘-np’)はこの状況で役に立ち ます.それを利用することで,今いる階層から出ないことを保証します.Wget を以下のようにして呼び出したとします.

 
wget -r --no-parent http://somehost/~luzer/my-archive/

これは,‘/~his-girls-homepage/’や‘/~luzer/all-my-mpegs/’へ参 照するものは参照するものをたどらないので安心できます.興味があるアーカ イブのみダウンロードされます.特に,それはより知的な方法でリダイレクト を処理するだけなので,‘--no-parent’は‘-I/~luzer/my-archive’ に似ています.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4.4 相対的なリンク

-L’が開始される時,相対リンクのみ回収されます.相対リンクは,ここ ではウェブサーバのルートを参照しないものと定義します.例えば以下のリン クは相対的なものです.

 
<a href="foo.gif">
<a href="foo/bar.gif">
<a href="../foo/bar.gif">

以下のリンクは相対的ではありません.

 
<a href="/foo.gif">
<a href="/foo/bar.gif">
<a href="http://www.server.com/foo/bar.gif">

このオプションを使用することで,‘-H’を用いない場合でも,再帰的な回 収でホストをまたがないことを保証します.単純な状況では,リンクを変換す ること無く“正しく動作する”ダウンロードも可能になります.

このオプションは,おそらくそんなには役に立たず,将来のリリースでは削除 されるかもしれません.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

4.5 FTPリンクをだどる

FTPの規則は,必要があって若干特殊になっています.HTMLドキュメ ントのFTPリンクは参照の目的を含むことが多く,デフォルトでダウンロー ドすることが不便なことがよくあります.

HTMLドキュメントからFTPへのリンクをたどらせるため, ‘--follow-ftp’オプションを指定する必要があります.そうすることで, FTPリンクは,‘-H’の設定にかかわらずホストをまたぎます. FTPリンクがHTTPサーバと同じホストを示すことは滅多にないので, これは理にかなっています.同じ理由から,‘-L’オプションはそのような ダウンロードで効果がありません.一方,ドメインの受け入れ(‘-D’) と 接尾子の規則(‘-A’と‘-R’)は通常適用されます.

また,FTPディレクトリへのリンクをたどることは,再帰的回収以上では ないことに注意してください.


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は新堂 安孝によって2009年9月22日texi2html 1.82を用いて生成されました。