golangでシンプルクローラ gocrawsanを作ってみました。ということでツールの紹介です。

機能

  • 設定ファイルベースでURLを指定して、対象URLに対するステータスコードを標準出力に出力
  • ステータスコードを標準出力に表示する以外に、CSSセレクタを使って属性、テキスト値の抽出
  • クローラーらしくリンクを辿って再帰的にURLにアクセスする
  • gocrawsanっていう名前だけどコマンド名はgocという矛盾(短くしたかったけどご苦労さんって言いたかっただけ)

インストール

でOK。zsh補完関数もインストールしたい場合はオプションを付けてください

使い方

以下のようなconfigファイルをtomlで書いてクローリング対象のURLを指定します。

設定ファイルを書いたら、以下のコマンドでURLに対して

–configを指定しない場合は~/.config/gocrawsan/config.tomlをデフォルトで読み込みます。

対象URLのリンクを辿りたい場合は、depthオプションを使って辿る回数を指定できます。デフォルトは1で対象URLしかクローリングしない仕様になっています。

gocrawsanの基本の動作は各URLのステータスコードを出力します。

CSSセレクタを使って要素の属性値やテキストを抜き出したい場合は、以下のようなオプションを付けて実行すればOKです。

extract-typeオプションにはattrかtextを指定します。attrの場合は属性値を抜き出し、attributeオプションで属性を指定します。textを指定するとタグ内のテキスト値を抜き出します。

タイムアウト値(秒)を–timeoutオプションで指定できたり、UserAgentを–useragentオプションで偽装できたりします。

技術的な話

golangっぽくgoroutine使って並列にリクエストを出してます(基本的な使い方をしているので割愛)

また、zsh補完関数のインストールもオプションに入れてみました。こんな感じ↓

macOSとUbuntuでzshを入れた環境では/usr/local/share/zsh/site-functionsがあったので決め打ちでmvしてます

 

クローラって呼んで良いのかわかりませんが、URLに対する死活監視としてはシンプルに実行できるので、よろしければお使いください〜