はじめに

WWWFileCollectorはperlで書かれたシンプルなウェブ・クローラです。
LinuxやFreeBSDなどがインストールされた、24時間稼動のサーバ上で動作させることを前提に作られています。

つくりはとにかくシンプルで、perlで書かれたコードは、全てを足し合わせても1000行程度です。
処理もモジュール化されており、「クロール」「フィルタ」「ダウンロード」の3つの処理モジュールで構成されています。

設定することですぐ利用できますし、修正BSDライセンスで配布していますので、修正を加えて機能を追加したり、別のプログラムに書き換えることもできます。

このソフトウェアが、あなたのお役に立てれば幸いです。

使い方

以下のURLから最新版をダウンロードしてください。

WWWFileCollector

アーカイブを解凍し、展開されたファイルを適当なフォルダに格納してください。
サンプルのコンフィグファイル「sample.conf」をコピーし、任意の名前に変更した後、中身を編集してください。

シェルのコマンドラインで「./execute.sh xxxx.conf」とすることでクローラを起動できます。
(もちろん、cronで指定して定期的に起動させることもできます。)

コンフィグファイルの編集方法

コンフィグファイル内で設定すべき箇所は以下の通りです。

%iCrawlURL

クロールするルートのURLを指定します。
連想配列形式になっており、複数指定することが可能です。
その際、「クロールするルートURL => クロールする深度」の形で設定してください。

以下は設定の例です。

our(%iCrawlURL)=
(
	'http://www.google.co.jp'		=>	2,
	'http://www.yahoo.co.jp'		=>	1
);

クロールする深度は、そのルートURLから何階層分リンクを辿るかを指定します。
ルートURLのみクロールする場合は0を、1階層分だけリンクを辿る場合は1を、以降任意の正の整数を指定できます。

尚、ページがIFRAMEで指定されている場合や、リダイレクトされた場合などは、深度にカウントされません。

$iSkipCrawlOtherDomainURL

「%iCrawlURL」で指定したURL以外のドメインをクロールするかしないかを指定します。
0を指定すると別ドメインもクロールしますが、1を指定すると別ドメインはクロールしなくなります。

@iWhiteListURLPrefix

特例的にクロールを許可するURLのリスト(=ホワイトリスト)を指定します。

このリストは、「$iSkipCrawlOtherDomainURL」の設定には影響を受けません。
たとえば、$iSkipCrawlOtherDomainURL=1であっても、この設定に入れられたURLは(たとえドメインが異なっていても)クロールされます。

@iBlackListURLPrefix

特例的にクロールを許可しないURLのリスト(=ブラックリスト)を指定します。

このリストは、「$iSkipCrawlOtherDomainURL」の設定には影響を受けません。
たとえば、$iSkipCrawlOtherDomainURL=0であっても、この設定に入れられたURLは(たとえドメインが異なっていても)クロールされません。

@iCrawlDuration

同一のサーバに対してクロールを繰り返す際に設けるインターバル(待ち時間)を指定します。
指定の単位は「秒」です。
尚、WWWFileCollectorでは同一のドメインに対して、可能な限りクロールが繰り返されないように調整されています。

@iDownloadDuration

同一のサーバに対してダウンロードを繰り返す際に設けるインターバル(待ち時間)を指定します。
指定の単位は「秒」です。
尚、WWWFileCollectorでは同一のドメインに対して、可能な限りダウンロードが繰り返されないように調整されています。

@iTotalDownloadSizeLimit

一回の実行でダウンロードする総ファイルサイズを指定します。
ダウンロードしたファイルのサイズの合計がこの設定値を超えた場合、ダウンロードは中止され、次回実行時に回されます。
指定の単位は「バイト」です。

@iDownloadDocumentExtension

a hrefで指定されるリンクに対し、実際にダウンロードする拡張子を指定します。

@iDownloadImageExtension

img srcで指定されるリンクに対し、実際にダウンロードする拡張子を指定します。

@iUserAgent

クロールやダウンロードを行うときにサーバ側に送信するUserAgentを指定します。

$iLogDirectory

ログファイル一式を保存するディレクトリを指定します。

$iFileDirectory

ダウンロードしたファイルを格納するディレクトリを指定します。

WWWFileCollectorが作成する中間ファイル

WWWFileCollectorは、3つの処理モジュール間で処理結果を受け渡しするために、いくつかの中間ファイルを作成します。
中間ファイルは、以下の設定により、ログファイル格納先のディレクトリに保存されます。

ここでは、それぞれの中間ファイルがどういう意味を持つものなのかを説明します。

$iURLList_document

「クロール」処理モジュールが生成するファイルで、a hrefタグで指定されたURL一覧などが格納されます。
このファイルは、後続処理モジュールの「フィルタ」により参照されます。
デフォルトの設定では、ログファイル格納先のディレクトリに「url_list_document.csv」の名前で保存されます。

$iURLList_image

「クロール」処理モジュールが生成するファイルで、img srcタグで指定されたURL一覧などが格納されます。
このファイルは、後続処理モジュールの「フィルタ」により参照されます。
デフォルトの設定では、ログファイル格納先のディレクトリに「url_list_image.csv」の名前で保存されます。

$iURLList_document_filtered

「フィルタ」処理モジュールが生成するファイルで、a hrefタグで指定されたURLのうち、ユーザ選択した拡張子のみがフィルタされ格納されます。
デフォルトの設定では、ログファイル格納先のディレクトリに「url_list_document_filtered.csv」の名前で保存されます。

$iURLList_image_filtered

「フィルタ」処理モジュールが生成するファイルで、img srcタグで指定されたURLのうち、ユーザ選択した拡張子のみがフィルタされ格納されます。
デフォルトの設定では、ログファイル格納先のディレクトリに「url_list_image_filtered.csv」の名前で保存されます。

$iURLList_already_downloaded

「ダウンロード」処理モジュールが生成するファイルで、ダウンロード済みのURL一覧などが格納されます。
デフォルトの設定では、ログファイル格納先のディレクトリに「url_list_already_downloaded.csv」の名前で保存されます。
このファイルを消去してしまうと、以前ダウンロードしたファイルが再度ダウンロードされるため、誤って消さないようにしてください。

これらの中間ファイルの中で最も重要なのは、「$iURLList_already_downloaded」で指定されるファイルです。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。