目次
この記事はアピリッツの技術ブログ「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
↓の画面が開きます
jobの作成
クロールをするためのジョブを作成します。
↓の赤枠の部分に名前を入れてcreateボタンを押します。
job画面へ遷移
↓の赤枠の部分が作成されるのでクリック
↓の画面が開きます
編集
最低限クロールを実行するために、xmlファイルを設定しなくちゃいけない箇所があります。
画面上部のConfigurationをクリック
↓の画面が開きます
metadata.operatorContactUrlの編集
クロールしたページでなにかトラブルが起きた用に、ページの管理者がクローラーの管理者にコンタクトをするためのページを指定します。
↓の赤枠の部分
beanタグ(id=”longerOverrides”)の編集
クロールのシード(開始地点)になるURLです。
↓の赤枠の部分を編集
実行
ジョブのトップ画面で
build→checkpoint→launchの順番で実行すれば実行は可能
結果
実行結果は↓に出力されます。
おわりに
データを取得するためにはまだまだ設定をする必要がありそうです。今後調べていきます。
参考
・ホームページ
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