Apache プロジェクトのクローラ Nutch を軽く試してみた

Nutch は Apache プロジェクトで開発されているクローラ(crawler)です。クローラは、起点として指定されたURLからリンクをたどりながらHTMLをデータベース化するソフトウェアです。 GoogleYahoo! 等の検索ポータルが内部で使用していることで知られています。スパイダー(Spider)、ボット(bot)等といわれることもあります。
Nutch は 2009/3/23 についにバージョン 1.0 がリリースされました。


Nutch のインストールには JAVA 及び Tomcat が必要です。まだインストールしていない場合には先にインストールしておきます。しばらくアップデートしていない場合にアップデートしておいた方がよいでしょう。
以下を参考にしてください。


インストールからクロール結果の確認まで手順は5段階あります。

  • インストール
  • クロールのための設定
  • クロール
  • クロール結果の確認ための設定 Tomcat にアプリケーションを登録する
  • 確認してみる
  • インストール

http://hudson.zones.apache.org/hudson/job/Nutch-trunk/
から最新のものをダウンロードしてインストールします。
下は、2009/05/30時点での最新版をインストールしています。

% wget http://hudson.zones.apache.org/hudson/job/Nutch-trunk/829/artifact/trunk/build/nutch-2009-05-30_04-01-38.tar.gz
% tar xvfz nutch-2009-05-30_04-01-38.tar.gz
% export NUTCH_HOME=$HOME/local/nutch-2009-05-30_04-01-38
  • クロールのための設定

http://lucene.apache.org/nutch/ を起点にクロールする設定の例です。

% cd $NUTCH_HOME
% vi conf/nutch-default.xml <- 任意の'User-Agent'をセットする。

  http.agent.name
  NutchSpider <- 'User-Agent'を指定する(なんでもよい)

% mkdir urls <- クロールの起点を記述したテキストファイルを置くディレクトリ。ここにURLを記述したファイルを置いておくとクロールされる。
% vi urls/nutch <- クロールの起点となるURLを記述する。複数URLを書いてもよい。
 http://lucene.apache.org/nutch/ <- 追記

% vi conf/crawl-urlfilter.txt <- クロール対処とする・しないサイトを指定(変なとこまで回って収集つかなくなったり、怒られたりしないように最初はセットしておいた方がイイ)
#+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
 +^http://([a-z0-9]*\.)*apache.org/ <- 変更
  • クロール
bin/nutch crawl urls -dir crawl -depth 3 -topN 50 > crawl.log 2>&1
 -dir : crawlしたデータを保存するディレクトリ
 -threads : 並行動作スレッド数
 -depth : リンクをたどる階層の深さ
 -topN N : 各階層での最大ページ数
  • クロール結果の確認ための設定 Tomcat にアプリケーションを登録する
% export CATALINA_HOME=$HOME/local/apache-tomcat-5.5.27 <- Tomcat が $HOME/local/apache-tomcat-5.5.27 にインストールされている場合
% cd $CATALINA_HOME/webapps
% mkdir nutch
% cd nutch
% jar xvf $NUTCH_HOME/nutch-2009-05-30_04-01-38.war
% cd $NUTCH_HOME <- デフォルトの設定ではTomcatを起動したディレクトリの下のcrawlが検索対象になる。
% $CATALINA_HOME/bin/startup.sh
  • 確認してみる

http://host:8080/nutch/jp/ にアクセス。検索ボックスに nutch と入れて検索してみる。


こんな感じで検索されればOK。


ではでは


参考文献
NutchTutorial