wgetでサイトのリンク切れURLを調査する

諸事情により、Webサイトのリンク切れ調査をする必要が発生し、なんかお手軽にできないかなと調べてみたところwgetで調べることができそうだったので、実際にやってみることにした。
以下のようにオプションを付与することで、リンク切れのページをログにリストアップさせることができるようになる。

wget --spider -o ./wget.log -e robots=off -r -p http://target.domain

 

設定しているオプションは以下。

  • –spider … ファイルのダウンロードは行わない
  • -o ./wget.log … カレントディレクトリ配下にログを出力する(このログが重要)
  • -e robots=off … robots.txtを無視する
  • -r … 指定されたURLを再帰的に取得する
  • -p … 画像等も全て取得する
Sponsored Links

これで、調査対象のURLに対して処理を行う。それなりに処理時間がかかるので、できればnohupなどと組み合わせてバックグラウンドジョブとしてキックするようにしてやるといいだろう。
処理後、指定したログファイル(./wget.log)にリクエストの結果が書き込まれるので、以下のようにgrepをして404エラーとなったURLを確認してやる。

grep -B2 '404 Not Found' wget.log | grep http
[root@BS-PUB-CENT7-01 ~]# grep -B2 '404 Not Found' wget.log | grep http
--2017-07-15 06:53:28--  https://sample.com/xml/rsd.xml
--2017-07-15 06:53:49--  https://sample.com/aaa.js

 

リンク元のページがどこなのかまでは見れないので、そこを確認したい場合は「–spider」オプションを解除して対象のリンクやファイル名でダウンロードしたファイルに対しgrepしてやればいいだろう。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*