スクレイピングスクリプトを作る際、それぞれのコンピュータにかかる負荷について、次のようなことを考えました。
- リクエスト数:10カテゴリ×約200ページ=約2,000ページ
- 自分側サーバの負荷限定:30分間ぐらいで終わるように。約2,000リクエスト / 1,800秒 = 約1リクエスト/秒
- 相手側サーバの負荷限定:シリアルアクセス(リクエストは同時に複数送信しない、リクエストの応答が返ってきてから次のリクエストを送信する)
- 単位時間あたりリクエスト数を限定:リクエストとリクエストとの間に適当な時間間隔(ウエイト)を作る
また、アンカーリンクのURLからTosCodeでのデータベース検索が予想できましたので、データベースの負荷は限定的であろうと思っていました。
http://www.library.okazaki.aichi.jp/tosho/Asp/Syousai_g.asp?TosCode=xxxxxxxxxxx
補足
TosCodeの件、説明が足りないかもしれないので、ちょっと補足します。(6月22日)
TosCodeという変数名から推測して、図書館蔵書についてのユニークなコードである可能性が高く、データベースのテーブルではプライマリーキーになっているもしくは、インデックスが張ってある可能性が高い。
Syousai_g.aspというプログラムの中では、TosCodeをキーとしてデータベースサーバに検索させるクエリを投げていると予想できる。
蔵書は100万冊オーダーなので、データベースサーバがどんなアルゴリズムを使っているか不明だが、負荷は限定的と考える。
よって、このアンカーリンクのURLは自信を持ってのアンカーリンクと考えた。(読んでも大丈夫ですよみたいな。)
ただし、予約数やどこどこの図書館にあるみたいな情報を巧く捌くようなデータベース設計とアプリケーション設計になっているという前提での話ですが。
2010.06.21