Macにwgetコマンドが無かったのでMacPortsで入れた

curlコマンドは使ってたけどwgetコマンドが無かったので入れました。どうもcurlだと、リンクを辿ってサイト全体をダウンロードするような機能が無いらしく、wgetの方を使いたくなりました。

それぞれの特徴をまとめますと、wgetはクローラとして、curlは連番ファイルのダウンローダとしての機能が盛り込まれています。

wgetとcurlの根本的な違い - ctrlshiftの日記

詳しくは引用元にあるけど、こんな特徴になっているらしい。

インストール

$ sudo port install wget

使い方というか備忘録

サイトを指定してミラー相当をダウンロードする
$ wget -mkKE http://example.com
-m --mirror -r -N -l inf --no-remove-listing

-mは、これらを指定した事になる。

-r --recursive 再帰的に取得する。ただし、robots.txtで拒否されている場合は、指定したページだけしか取得できない。
-k --convert-links ダウンロードしたhtmlファイルからのリンクや画像のパスをうまく表示できるように変換する
-K --backup-converted .origをつけて変換前のファイルを残す
-E --adjust-extension mod_rewriteされてたりクエリーストリングによってコンテンツが変わるサイトの場合、.htmlをつけて保存する。古いバージョンのwgetでは--html-extentionだったらしい。
-N --timestamping ローカルに同名のファイルがあって、ファイルサイズが同じ場合に、更新日時を比較してリモートのほうが新しければダウンロードする。
mirrorを知る前に使ってたオプション
$ wget -rpkK http://example.com
-p --page-requisites ページの表示に必要な画像やcssなどを合わせてダウンロードする。
robots.txtを無視する
$ wget -e robots=off

後述の.wgetrcで恒久的にoffにも出来る。

--restrict-file-names=windows
$ wget --restrict-file-names=windows example.com/index.php?foo

Windowsではファイル名に?を使えないのでindex.php?fooindex.php@fooにして保存する。?だけじゃなく\, |, /, :, ?, ", *, <, >とASCII制御文字も変換する。Windowsで動くwgetコマンドのデフォルトは--restrict-file-names=windowsになっているらしい。逆にUnix系で動くwgetコマンドは--restrict-file-names=unixがデフォルトらしいので、通常はあまり気にしなくてもよさそう。

.wgetrc
robots = off
user_agent = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
timeout = 120
passive_ftp = on

オプションで指定するほかにホームディレクトリに置くrcファイルでも指定できるものが結構あるみたい。

環境

Mac Mac OS X 10.5.8(Leopard
wget GNU Wget 1.13.4 built on darwin9.8.0.

書いた日

2012-02-13
例によって下書きのまま放置してた