その他
    ホーム技術発信DoRubyheritrixでクロールをする

    heritrixでクロールをする

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    クローラーとはWEB上に掲載されているテキストや画像や音声データを収集するロボットのことをいいます。

    クローラーとは

    クローラーとはWEB上に掲載されているテキストや画像や音声データを収集するロボットのことをいいます。html上のaタグをもとにクロールするURLを取得し情報を取得するのでクロールさせる場合はページ上のどこを取得するか指定する必要があります。

    heritrixとは

    クローラーするソフトはたくさんありますが、今回はheritrixを使います。heritrixはspringをもとに作られているオープンソースのクローラーです。ブラウザ上で設定や実行などができるので割と便利です。現在バージョン3系まで出ており、動かすためにはjava6以上が必要です。

    導入

    ホームーページの導入ガイドは3.1ですが、バージョン3.2が出ているので今回はそちらを使います。
    環境:
    Vagrant + VirtualBox
    OS:CentOS Linux release 7.4.1708 (Core)
    java:1.7.0_80

    ソースの取得

    まずはこちらから環境にあったものを持ってきます。

    wget http://builds.archive.org/maven2/org/archive/heritrix/heritrix/3.2.0/heritrix-3.2.0-dist.tar.gz
    tar zxvf heritrix-3.2.0-dist.tar.gz
    

    パスやメモリの設定

    適宜設定を行います。

    export JAVA_HOME=/usr/java/jdk1.7.0_80
    export HERITRIX_HOME=/home/vagrant/heritrix-3.2.0
    chmod u+x $HERITRIX_HOME/bin/heritrix
    export JAVA_OPTS=-Xmx1024M
    

    起動

    仮想環境の場合は、-bオプションでipを指定します。
    自分はvagrantなのでゲストのipを設定

    $HERITRIX_HOME/bin/heritrix -a admin:admin -b 192.168.XX.XX
    

    ※javaのバージョンが新しすぎると以下のようなエラーが出るようです。自分はjavaのバージョンを下げることで対応しました。

    Exception in thread "main" java.lang.NoClassDefFoundError: sun/security/tools/KeyTool
      at org.archive.crawler.Heritrix.useAdhocKeystore(Heritrix.java:438)
      at org.archive.crawler.Heritrix.instanceMain(Heritrix.java:319)
      at org.archive.crawler.Heritrix.main(Heritrix.java:189)
    Caused by: java.lang.ClassNotFoundException: sun.security.tools.KeyTool
      at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
      at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
      ... 3 more
    

    クロールの実行

    ブラウザにアクセス

    https://192.168.XX.XX:8443/enginebasic認証を聞かれます。ユーザー:adminパスワード:admin

    ↓の画面が開きます
    enter image description here

    jobの作成

    クロールをするためのジョブを作成します。
    ↓の赤枠の部分に名前を入れてcreateボタンを押します。
    enter image description here

    job画面へ遷移

    ↓の赤枠の部分が作成されるのでクリック
    enter image description here

    ↓の画面が開きます
    enter image description here

    編集

    最低限クロールを実行するために、xmlファイルを設定しなくちゃいけない箇所があります。
    画面上部のConfigurationをクリック
    ↓の画面が開きます
    enter image description here

    metadata.operatorContactUrlの編集

    クロールしたページでなにかトラブルが起きた用に、ページの管理者がクローラーの管理者にコンタクトをするためのページを指定します。
    ↓の赤枠の部分
    enter image description here

    beanタグ(id=”longerOverrides”)の編集

    クロールのシード(開始地点)になるURLです。
    ↓の赤枠の部分を編集
    enter image description here

    実行

    ジョブのトップ画面で
    build→checkpoint→launchの順番で実行すれば実行は可能

    結果

    実行結果は↓に出力されます。
    enter image description here

    おわりに

    データを取得するためにはまだまだ設定をする必要がありそうです。今後調べていきます。

    参考

    ・ホームページ
    https://webarchive.jira.com/wiki/spaces/Heritrix/overview

    ・Webクローラ「Heritrix」を使ってみる
    https://qiita.com/megu_ma/items/26ae5937ca4362ad767b

    ・国立国会図書館 インターネット資料収集保存事業
    http://warp.da.ndl.go.jp/contents/reccommend/mechanism/mechanism_heritrix.html