curlコマンドは使ってたけどwgetコマンドが無かったので入れました。どうもcurlだと、リンクを辿ってサイト全体をダウンロードするような機能が無いらしく、wgetの方を使いたくなりました。
それぞれの特徴をまとめますと、wgetはクローラとして、curlは連番ファイルのダウンローダとしての機能が盛り込まれています。
詳しくは引用元にあるけど、こんな特徴になっているらしい。
$ 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 | ローカルに同名のファイルがあって、ファイルサイズが同じ場合に、更新日時を比較してリモートのほうが新しければダウンロードする。 |
$ wget -rpkK http://example.com
| -p | --page-requisites | ページの表示に必要な画像やcssなどを合わせてダウンロードする。 |
$ wget -e robots=off
後述の.wgetrcで恒久的にoffにも出来る。
$ wget --restrict-file-names=windows example.com/index.php?foo
Windowsではファイル名に?を使えないのでindex.php?fooをindex.php@fooにして保存する。?だけじゃなく\, |, /, :, ?, ", *, <, >とASCII制御文字も変換する。Windowsで動くwgetコマンドのデフォルトは--restrict-file-names=windowsになっているらしい。逆にUnix系で動くwgetコマンドは--restrict-file-names=unixがデフォルトらしいので、通常はあまり気にしなくてもよさそう。
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
例によって下書きのまま放置してた
