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などを合わせてダウンロードする。 |
--restrict-file-names=windows
$ 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がデフォルトらしいので、通常はあまり気にしなくてもよさそう。
.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ファイルでも指定できるものが結構あるみたい。
書いた日
2012-02-13
例によって下書きのまま放置してた