Webページクローラー
ここでは、Webクローラーの作成(追加)方法と管理について説明します。
Webページクローラーとは
Webサイト内検索システムを構築するためには、Webサイト内の文章などが登録されたインデックスが必要です。
Webサイトの文章や画像などのデータを収集し、HTMLタグを除去するなどの適切な処理を行った後、コレクションへ登録(インデクシング)するアプリケーションが「Webページクローラー」です。
KandaSearchには、画面からの指定だけでWebクローラーを作成し、管理・実行できる機能があります。それがKandaSearchの「Webクローラー」です。
Webクローラーのご利用条件等
KandaSearchの「Webクローラー」 のご利用条件や注意事項は以下の通りです。
- クロールしたデータを登録(インデクシング)するためのコレクションをあらかじめ用意しておきます。拡張機能ライブラリーにコレクション作成用のサンプルのコンフィグがあります。
- HTML/PDF/Word/Excel/PowerPointのファイル種別をサポートしています。
- Standardプラン以上のプランでは、1つのクローラージョブを無料で作成できます。
- ご利用のプラン、Webクローラーの無償/有償の区分により、設定できるシード数が異なります。(シードとはクロールの起点になるURLのことです)
- 2つ目以降のジョブは有償のクロールジョブをご購入いただくことでご利用いただけます。
- 日次のスケジューリングは有償のクロールジョブでご利用いただけます。
- 無償/有償にかかわらず、コミュニティ(Community)プランのコレクションを指定したクロールジョブの作成はできません。
- Webクローラーはクロール先Webサイトのrobots.txtを参照します。
- WebクローラーのIPアドレス情報が必要な場合はお問い合わせよりお問い合わせください。
- 無償のWebクローラーはKandaSearch内の共有クラスターにて実行されます。
- 有償のWebクローラーはご利用者様専用インスタンスにて実行されます。
クローラージョブの作成方法
Webクローラーはクローラージョブという単位で作成・管理されます。
クローラージョブの作成方法は以下の通りです。
- KandaSearchへログインします。
- プロジェクトの一覧画面より、対象のプロジェクト名をクリックします。(プロジェクトの一覧を表示させるには、画面左上のKandaSearchのロゴをクリックします)
- プロジェクトビューの左サイドメニューより「Webページクローラー」をクリックします。
- クローラージョブ画面が表示されますので、「+クローラージョブを追加する」をクリックします。
これ以降の手順は各画面ごとに以下で説明します。
1.タイプの設定
コンボボックスから「クロールジョブタイプ」を選択します。有償のジョブタイプも選択できます。
2.ジョブ設定
ジョブに関する以下の項目を設定します。
- ジョブ名 - ジョブを識別するための名前を指定します。日本語の指定もできます。必須項目です。
- ユーザー - ジョブの管理ユーザーを指定します。必須項目です。
- ジョブ概要 - ジョブの説明を入力します。
- シード - シード(クロールの起点になるURL)を指定します。必須項目です。
- 追加のシード - シードから到達できないURLを指定します。シードで指定したドメイン文字列で始める必要があります。例えば、シードに https://example.com/blog と指定したときに、https://example.com/doc を指定するなど。1行につき1シードを指定します。
3.追加の設定
クロールやインデックスに「含む項目」「除外する項目」を設定します。
クロールに含める - クロールに含めるファイルを正規表現で指定します。必須項目です。
設定例
.*
インデックスに含める - インデックスに含めるファイルを正規表現で指定します。必須項目です。
設定例
\.html$
\.htm$
\.pdf$
\.PDF$
クロールから除外 - クロールから除外するファイルを正規表現で指定します。
設定例
\.tar\.gz$
\.png$
\.jpeg$
\.jpg$
\.zip$
\.gif$
\.css$
\.php$
インデックスから除外 - インデックスから除外するファイルを正規表現で指定します。
設定例
https://example.com/category/.*
インデックスからコンテンツを除外 - インデックスから除外するコンテンツを正規表現で指定します。ここに記載した正規表現にマッチするコンテンツはインデクシングされません。
4.Solr設定
Solrに関する設定を行います。
- インスタンス名 - インデクシング対象のインスタンスを選択します。必須項目です。
- コレクション名 - インデクシング対象のコレクションを選択します。必須項目です。
- ユニークキー - ユニークキーが自動的に指定されます。必須項目です。
- 更新ハンドラ - 更新ハンドラを指定します。必須項目です。
- 削除ハンドラ - 以前のクロールで存在していたページが今回のクロールで存在しないことを検知した時にインデックスから削除する処理ためのハンドラを指定します。必須項目です。
- ステータスハンドラ - ステータス確認に使用するハンドラを指定します。必須項目です。
- コミット設定 - ドキュメントのコミット時間(ms)、「すべてのジョブの後にコミットしますか?」チェックボックスを指定します。
- 引数設定 - 引数名、引数値を複数セット指定できます。
引数設定の設定例
「literal.フィールド名」と設定すると、当該フィールド名に指定した固定値を入れることができます。検索時にファセットと絞り込み検索で利用できます。
literal.category=ホームページ
literal.author=(会社名等)
5.スケジュール設定
ジョブの実行スケジュールを「マニュアル」「毎日」(有償のジョブのみ)、「毎週」「毎月」から選択し、それぞれの条件を指定します。
6.確認
ここまでの設定内容が表示されますので間違いがないか確認し、「クローラージョブを作成する」をクリックします。
作成が成功すると、クローラージョブ一覧にクローラージョブが追加されます。
クローラージョブの管理
クローラージョブの一覧では、各ジョブについて以下の管理が可能です。
- ジョブ情報 - ジョブ名、作成者、シード、インスタンスロゴ、コレクション名、ステータスが表示されます。
- ジョブ実行(PLAYアイコン) - ジョブ実行アイコンをクリックすると、クローラージョブが直ちに実行されます。実行中はステータスが「ジョブ処理中」になります。ジョブの実行中は本アイコンは停止(STOPアイコン)となり、クリックするとジョブが直ちに停止されます。
- ジョブの詳細を表示する - クローラージョブの詳細が表示されます。
- ジョブステータスを表示する - クローラージョブのステータスが表示され、ジョブの進行状況を確認できます。「クローラ ジョブのステータス」画面内のリロードをクリックすると、最新のステータスに更新できます。
- ジョブの編集 - クローラージョブの編集が可能です。
- ジョブをリセット - クロール先のデータの更新の有無に関係なく、インデックスの再作成を可能にするためのリセット処理を行います。なお、実際のインデクシング処理は次回のクロールジョブ実行時に行われます。
- ジョブを削除する - クローラージョブを削除できます。
補足事項
- クローラージョブの削除について、有償のクロールジョブを削除する場合、料金の払い戻しを受けることはできません。新しいジョブを作成する場合は、新しいジョブを購入する必要があります。新しいジョブを購入せずに他のジョブとして実行する場合は、既存のクロールジョブを編集して利用します。
- クローラージョブはクロールしたページのアドレス(URL)をデータベースに保存しています。一度インデクシングに成功したページは、ページが更新されないと再度インデクシングされません。「ジョブをリセット」することでデータベースに保存した情報をクリアできます。これにより、次回のジョブ実行時に、ページが更新されていなくても強制的に再インデクシングさせることができます。
- エラーが発生しているときに当該ジョブが削除できない場合、当該ジョブを再実行&再停止すると、エラーが一時的に解消しジョブを削除できる場合があります。
クローラージョブがエラーとなる場合
クローラージョブがエラーとなる場合の対処方法をいくつかご紹介します。
「クロール」は「相手側(クロール先システム)」の都合でエラーとなる場合もあるので、時間をおいて再実行するとエラーが解消する場合があります。
相手側の問題でない場合、Solr側で発生するエラーが問題となってクロールが失敗している可能性がありますので、Solrログを「ファイル管理」からダウンロードして調べます。
Solrログの例:
Couldn't get multipart parts in order to delete them => java.lang.IllegalStateException: No multipart config for servlet
Webクローラーの標準処理またはカスタムスクレイピングプラグインが対応していないファイル種別をインデクシングしようとしています。「インデックスに含める」にて"\.html$"と"\.pdf$"
だけにするなど、インデクシング対象を限定し、徐々に広げるようにするといいでしょう。
クローラー用プラグインの活用
HTML内に直書きされたJavaScriptの除去など、Webクローラーの標準のスクレイピング処理ではできない処理は、プラグインとして作成し、更新ハンドラに指定することで実現できます。
また、プラグインを利用することで、<h1/>
タグのテキストに重み付けをするなど、細かなカスタマイズも可能になります。
拡張機能ライブラリーにこれらを体験できるサンプル用のプラグインやコンフィグがあります。