きんめも

語彙力がヤバイ

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

f:id:kinmemodoki:20161005220731p:plain
この場合,kinmemodoki.netドメインにあるwebページを再帰的にDLしてくれる.
しかし,外部コンテンツのjqueryやwebフォントが保存されないため,一部表示が乱れる.

指定したページとその関連コンテンツを保存するコマンド

wget -r -l 1 -H --convert-links  -nc  kinmemodoki.net

f:id:kinmemodoki:20161005220727p:plain
この場合,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関連のオプション) と同じ.