pdf中毒者のためのwget入門

大学の先生方が用意する講義資料やプレゼンテーションのスライドの類なんかは,得てして個人のウェブページにまとまりなくリストアップされているだけの場合が多い.必要なときにダウンロードするようにすると既に持っているファイルを再度ダウンロードしてしまって重複することがあるし,まとめてダウンロードするためにブラウザ上でいちいちクリックするのも面倒くさい.そのため,ウェブページにリストアップされているpdfファイルをコマンド一発でまとめてダウンロードしたい!というときには,wgetコマンドが非常に便利だ.

1
$ wget -r -l 1 -A pdf -w 5 -nd http://example.com/hoge/index.html

これだけでいいのだ.このコマンドを使えば,example.com/hoge/index.htmlというウェブページにリストアップされているpdfファイルを一括してダウンロードすることができる.指定したオプションを少し解説しよう.

-r -l 1

-r-lオプションによって,再帰的に1階層分だけリンクをたどるように指定している.つまり,指定したウェブページに貼ってあるリンクの中から,目的となるファイルだけをダウンロードすることができる.

-A pdf

-Aオプションによって,拡張子がpdfのファイルのみをダウンロードするように指定している.これをpptに変えればパワーポイントのファイルだけダウンロードできるし,pdf,pptのようにコンマ区切りで複数列挙することもできる.

-w 5

-wオプションによって,ダウンロード処理の間隔を5秒開けている.wgetはダウンロード処理が終わり次第次のダウンロードを実行し始めるため,短時間に大量にダウンロードすると向こうのサーバに負荷をかける可能性がある.そのため,ダウンロード間隔を少し開けることで,集中してアクセスしないようにしている.間隔の秒数には特に意味があるわけではないが,最低でも数秒は開けたほうが良いだろう.「Spidering hacks―ウェブ情報ラクラク取得テクニック101選」なんかを見ると,スクリプトによって3秒または5秒開けてる場合が多い.

-nd

-ndオプションによって,ダウンロードしたファイルを同一ディレクトリ(標準ではカレントディレクトリ)に保存している.これを指定しないと,ウェブページのURL階層通りに/hoge/fuga/piyo/といったディレクトリ構造が作成されてしまう.なお,-P hogeというオプションを追加すると,hogeというディレクトリ以下にダウンロードしたファイルが保存される.

なお,Mac OS Xの場合にはwgetのインストールが必要

そういえば,wgetはMacには標準で入っていないので,MacPortsかHomebrewなどを使ってインストールする必要がある.

1
$ sudo port install wget

または

1
$ brew install wget

もちろんソースコードをコンパイルして入れることもできる(http://osxdaily.com/2012/05/22/install-wget-mac-os-x/)

!注意!

相手方のサーバ負荷に配慮するのはもちろん,利用規約の有無やダウンロード環境にも注意が必要である.ウェブページによっては,スクリプトを使った一括ダウンロードなどを制限/禁止している場合がある.上記コマンドを使ったダウンロードを行う際は,そのような利用規約があるかどうかをまず確認し,最大限利用規約を守るよう注意しなければいけない.また,万が一の場合には相手に迷惑を掛けてドメイン/IPアドレス単位でアクセスが禁止される可能性もある.そのため,会社や大学で実行する際には細心の注意を払い,同じIPアドレスを使う同僚や組織に迷惑をかけないよう注意しなければならない.

参考