• 検索結果がありません。

A クローラの実装

ドキュメント内 WISDOM Web (ページ 55-74)

第 5 章 クローラ 33

付録 5. A クローラの実装

5.A.1 システム構成

WISDOMクローラは,クロール情報を格納するデータベース,データベースへの各種アクセスを行う

データベース処理プロセス群,実際のWeb収集を制御するクロール制御プロセス群,により構成される.

データベースはシステム全体で1つであるが,データベース処理プロセス群及びクロール制御プロセ ス群は,2つのプロセス群をセットとして,複数セット実行する事も可能である.現在の運用では,一般 (NORMAL),深度(DEPTH),RSSフィード(RSS)の3セットが実行されている.各クローラは,収 集ポリシーの違いによりクロール対象となるURLリストの作成方法が異なっており,以下のポリシーに て収集が行われている.

一般(NORMAL)クローラ

URLデータベースに登録されているURLに対し,ページを取得する.新規クローラ及び更新ク ローラをあわせて運用している.

深度(DEPTH)クローラ

特定のURLを基点に同一ドメインのリンクを辿りながら未取得のページを収集する.

• RSSフィード(RSS)クローラ

データベースに登録されているRSSフィードURLからRSSフィードを取得し,フィードに登録 されている未取得のURLについてページを収集する.





















 















 











5.6 WISDOMクローラ全体構成図(1)

5.A クローラの実装 43

 



















 



















5.7 WISDOMクローラ全体構成図(2)

基本となる構成は図 5.6に示す様に,URLデータベース,データベース処理プロセス群,クロール制 御プロセス群がお互いに必要な情報を通信しつつ,クロールを行う.

現在運用中の構成は,データベース処理プロセス群及びクロール制御プロセス群のセットが3セット並 行して運用されており,図5.7に示す様な構成となる.

データベース処理プロセス群とクロール制御プロセス群は,共通の作業ディレクトリにあるファイルを 経由して,相互の連携を取っている.両プロセス群のフロー及び相互連携の概要を図5.8に示す.

5.A.2 URL データベース

5.A.2.1 概要

URLデータベースは,クロール対象URL及びRSSフィードURL,それぞれのクロール結果やステー タス等を管理する.また,本データベースで管理する情報は,WISDOMクローラだけでなく,Webデー タ管理システム等でも使用される.

5.A.2.2 システム構成

URLデータベースは,10億件規模のレコードを扱う事を考慮し,データベース管理システムである

MySQLを使用して構成する.表 5.2に運用にて使用しているURLデータベースの構成を示す.

5.A.2.3 URLテーブル

URLテーブルは,クロール対象となるURLやクロール結果,クロール実行用パラメータ等が格納さ れている.URLテーブルのフィールドを表5.3に示す.

5.2 URLデータベース構成 データベースシステム MySQL 5.0.45 ストレージエンジン InnoDB

データベース名 crawl

テーブル名

url URLテーブル

feed list RSSフィードテーブル host ホスト名テーブル(未使用)

5.3 URLテーブル

id UNSIGNED BIGINT

AUTO INCREMENT PRIMARY KEY

自動インクリメントによる主キー.

URL IDとして全システムを通して使用される.

url TEXT

INDEX(128)

ページURL

FQDN部は反転させて登録を行い,パスは反転させたFQDN の後ろに付加する.

protocol CHAR(8) プロトコル.現在はhttpのみ.

encode CHAR(16) ページの文字エンコード

language CHAR(8) ページの言語

md5sum CHAR(32) ページ本文部のMD5SUM

lastmodified DATETIME HTTPヘッダに含まれるLast-modified

lastget DATETIME 最後に更新データを取得した日時(Last-modifiedが無い場合

)

lastcrawl DATETIME 最後にクロールした日時

upcount INTEGER ページが更新された回数

uptime INTEGER 更新間隔の平均時間

error INTEGER エラーが連続して発生している回数

filtered INTEGER ページ内容がフィルタリングされた回数

deleted DATETIME 削除処理を行った日時

depth INTEGER

INDEX

リンク先を辿って取得する深度

priority INTEGER チェックに対する優先度

interest INTEGER URLの注目度,他ページからのリンク頻度等で計算する.更

新直後は0とする.

laststatus INTEGER 最終クロール時のHTTP STATUS

forwarded INTEGER 転送されている場合の転送先URL ID

host INTEGER ホストID,未使用

nocrawl INTEGER 非クロール対象フラグ

1の場合はWISDOMクローラではクロールしない.

5.A クローラの実装 45















































































































5.8 データベース処理プロセス及びクロール制御プロセス概要

5.A.2.4 RSSフィードテーブル

RSSフィードテーブルは,RSSフィードクロールにてフィードを取得するためにアクセスするURL及 びフィード取得履歴が格納されたテーブルである.RSSフィードテーブルのフィールドを表 5.4に示す.

id INTEGER

AUTO INCREMENT PRIMARY KEY

自動インクリメントによる主キー

site id INTEGER サイトID.未使用.

feed url TEXT INDEX

RSSフィードのURL

name TEXT RSSフィード発行元のサイト名

last updated DATETIME 最後に更新データを取得した日時

last accessed DATETIME INDEX

最後にRSSフィードにアクセスした日時

disable TYNEINT 無効フラグ.1でフィードにアクセスしない.

5.A.2.5 ホスト名テーブル

ホスト名テーブルは,ホスト単位での各種情報を取り扱うためのテーブルであるが,現時点では使用さ れていない.ホスト名テーブルのフィールドを表5.5に示す.

5.5 ホスト名テーブル

id UNSIGNED INTEGER

AUTO INCREMENT PRIMARY KEY

自動インクリメントによる主キー ホストIDとして使用する.

host TEXT

INDEX

ホスト名

address TEXT IPアドレス

複数ある場合は,セミコロン(;)で区切って記述 する.

hostmask TEXT 同一サイトとみなすためのマスク情報

5.A.2.6 URLデータベースアクセス用ライブラリ

URLデータベースへのアクセスは,アクセス用perlライブラリが用意されている.perlスクリプトか らアクセスする場合は,本ライブラリを利用する.シェルスクリプト等からアクセスする場合は,mysql コマンド等を用いて直接アクセスする必要がある.

5.A クローラの実装 47 モジュール名 CrawlDatabase.pm

new Option

dbname データベース名を指定する.

host データベースホストを指定する.

user アクセスユーザー名を指定する.

password アクセスパスワードを指定する.

debug 1でデバッグ出力を行う.

概要

URLデータベースへの各種アクセスを行うためのメソッドを提供するperlモジュール.

5.A.3 クロール制御プロセス

5.A.3.1 概要

クロール制御プロセスは,exCrawlerをベースとしたクロールモジュール及びデータベース処理用の一 部モジュールを用いて,シェルスクリプトにてクロール処理の実行制御を行っている.

本プロセスは,一定時間ごとにリクエストリストの監視及び前のクロールの終了からの経過時間を監 視,条件が満たされるとリクエストリストに従いWebクロール処理を実行する.Webクロール処理で は,クロールモジュールを実行,その結果に対しクロール深度によるリクエストリストの生成を行う.こ の処理によるリクエストリストが生成された場合は,再度Webクロール処理を行う.

Webクロール処理が終了すると,データプール登録処理プロセスに終了を通知するため,クロール完 了リストにデータディレクトリの絶対パスを記述する.

5.A.3.2 入出力データ

• リクエストリストファイル

リクエストリストファイルは1行1リクエストで記述されたテキストファイルであり,クロール モジュールが使用する.フォーマットの詳細及び追加情報については,リクエストリスト生成モ ジュールに記述されている.

クロールデータ

クロールデータは1つのディレクトリ以下にまとめて出力される.出力ディレクトリ名は,設定 ファイルに記載されたプレフィックス文字列に以下のdateコマンドを実行した結果を付加した物 となる.

date +%Y%m%d%H%M%S

なお,出力される内容については,クロールモジュールにて記述する.

クロール完了リスト

クロール完了リストは,クロール処理が完了し,データプールへの登録処理を行う準備ができた ディレクトリ一覧を記載したファイルである.ファイルには1行1ディレクトリで記述する.ディ レクトリ名は絶対パスで記述する必要がある.

5.A.4 データベース処理プロセス群

5.A.4.1 概要

データベース処理プロセス群は,データベース処理用の各種モジュールやRSSフィードクロールモ ジュール,及びクロールデータ待避処理モジュールを用いて,シェルスクリプトにてデータベースへのア クセスやクロールデータの後処理の制御を行っている.

本プロセス群は,リクエストリスト等の監視を行い,必要であれば各種処理を実行する.以下に各プロ セスが実行する処理を示す.

• リクエストリスト生成プロセス

クロール処理を実行するためのリクエストリストの生成を行う.リクエストリストの生成は,リク エストリストが存在しない場合に実行する.

リクエストリストの元となるURLリストは,URLデータベースから取得,もしくはRSSフィー ドクローラにより取得される.

• クロール後処理プロセス

クロール処理完了時に本プロセスが起動され,指定ディレクトリのクロールデータに対して,結果 をURLデータベースへ反映,抽出リンクを新規登録リストへ追加,クロールデータの圧縮及び退 避を行う.

新規URL追加プロセス

クロール結果から抽出された新規登録リストを用いて,URLデータベースへURLの登録を行う.

5.A.5 データベースアクセスモジュール

5.A.5.1 概要

データベースアクセスモジュールは,URLデータベースへの各種アクセス処理を行うためのスクリプ ト群である.URLデータベースへのアクセスについては,基本的にURLデータベースアクセス用ライ ブラリを使用する.

データベースアクセスモジュールには,以下のスクリプトが含まれる.

リクエスト対象URL選択モジュール db get crawl record.perl

• リクエストリスト生成モジュール make-crawl request.perl

• データベース更新情報整理モジュール remove-duplicate-urls.perl

• リンク情報変換モジュール linklist-convert.perl

• データベース更新モジュール update database.perl

ドキュメント内 WISDOM Web (ページ 55-74)