wgetでwebクローリングするときのメモ
http://www.bookshelf.jp/texi/wget/wget-ja_2.htmlを見る限り,
wgetを一回のコマンドでは同一ドメインのページは再帰的に(深度制限なしで)収集しつつ,外部ドメインは参照されるスクリプトのみ収集するのはできないっぽい.
落としてきたファイルに-i file -F
オプションで再帰的に読み込めば,うまくいきそうだと思った.
指定したページのドメインが配信するコンテンツのみ保存するコマンド
wget -r -l inf --convert-links -nc kinmemodoki.net
この場合,kinmemodoki.netドメインにあるwebページを再帰的にDLしてくれる.
しかし,外部コンテンツのjqueryやwebフォントが保存されないため,一部表示が乱れる.
指定したページとその関連コンテンツを保存するコマンド
wget -r -l 1 -H --convert-links -nc kinmemodoki.net
この場合,kinmemodoki.net/index.htmlのページのみ完璧にレンダリングできる.
しかし,深度2以上の内部コンテンツ(/content/a.htmlなど)がDLできない.
-l inf
とかにすると外部コンテンツのリンクも無限に辿ってしまう.
同一ドメインのコンテンツに対するレスポンスヘッダ表示
(死活監視,改ざん検知とかにつかえそう)
wget -m -np -S --spider kinmemodoki.net
なんか役立ちそうなwgetオプションたち
参照:http://www.bookshelf.jp/texi/wget/wget-ja_2.html
クロールの挙動関連
オプション | 説明 |
---|---|
-r | 再起的にリンクを辿る(html/xhtml形式のhref/src属性を参照する) |
-l (depth) | (depth)回リンクを辿る.-l inf で無限に辿る. |
-H | ホストをまたいで辿る. デフォルトでは起点URLと同じドメイン(サブドメイン含む)を辿る. |
-T (seconds) | タイムアウトを設定する.DNS,接続,読み込み待ち,を一律で設定する. デフォルトは読み込み待ちの900秒のみ. |
-np | 親ディレクトリは辿らない. ( example.com/web/index.html が起点ならexample.com/ は辿らない) |
-nc | すでに巡回した同一パスのファイルには,ローカルに保存したものを参照する. 動的に変化する場合は指定しない方が良い(?) |
–random-wait | リクエスト毎に0.5s-1.5sのウェイトを入れる. |
ファイルのDL関連
オプション | 説明 |
---|---|
-k | ファイル内の相対パスを,ローカル内でも参照できる様に変換./foo/doc.html 内の /bar/img.gif を, ../bar/img.gif にする. |
-S | レスポンスヘッダを出力する.コンテンツに付与したい場合は-s . |
-N | タイムスタンプを確認する. 以前の実行から更新されていないファイルはDLしない. |
-E | ファイル名がhtmlでないとき,接尾子`.html'を付与する. |
-O (file) | レスポンスを全て同一ファイルとして(file)に出力. |
-nd | ディレクトリの階層をつくらない. 複数回現れるファイル名は .n の接尾子がつく. |
-spider | ファイルをダウンロードしてこない |
--restrict-file-names=unix | OSでファイル名にできない文字をエスケープする.windowsは–restrict-file-names=windows にする. |
--convert-links | リンクがローカル上でも参照できるように変換する. |
-m | -r -N -l inf --no-remove-listing(FTP関連のオプション) と同じ. |