前回の記事
・
Ajax Webアプリケーション奮闘記 〜関西温泉マップ〜 WebCrawlerを自作できないか?で、掲載したリンクより、Webクローラの単純なアルゴリズムと、実現に向けての問題点をピックアップしてみる。
まず、Webクローラは大まかに以下のような動きで実現する。
1.出発となるURLを設定
2.HTTPプロトコルによりWebページを取得する。
3.取得したWebページのHTMLを解析し、リンクを抽出する。
4.3で取得したリンクより2を実行する。
この動作を大前提に、ネックとなる部分を挙げてみます。
A.取得できないWebページに対する処理
リンク先のURLが実際に存在するものとは限らない。その為、取得でき無かった場合の処理やタイムアウト処理が必要となってくる。
B.リンク先へは周期的なアクセスとする
Webクローラをバッチ処理のように、次々とアクセスすると、Webサーバへの負荷が大きくなる。場合によっては攻撃と勘違いされる。数秒に1回のペースでアクセスするなど、負荷を軽減させる処理が必要。
C.既に訪れたURLにアクセスしない
この処理を入れないと、無限ループで脱出できなくなるし、同じ情報を何度も蓄積することになる。この処理は簡単なようで、意外と難しい。
例えば、当ブログのURL
http://ajaxapp.blog79.fc2.com/
http://ajaxapp.blog79.fc2.com/index.html
上記2つのURLは同じページを指す。
など・・・
これらを踏まえてWebクローラを作る必要がある。
膨大な量のWeb情報の中から、欲しい情報を見つける為に、OperaブラウザやFireFoxブラウザを利用しているが、
さすがに、単純な情報収集を手作業で行う事への限界を感じ始めた。
というワケで、
Webクローラで、自動的に情報収集できたらいいなと思い、
自作する方法を調べてみた。
いきなり、Javaで書かれたオープンソースのWebクローラのサイトを発見したのだが、英語サイトの為、ややハードルが高い。でも、一番の近道はこのサイトであろう。
1.
Manageability - Open Source Web Crawlers Written in Javaリンク1は、置いておいて、日本語サイトで紹介しているものを探してみた。
下記リンク2Lは、Webクローラにおける単純なソースが書いてある。導入程度に残しておくとする。ただ、このURLのブログ、2007年2月で更新がストップしているようだ。残念・・
2.
プログラム開発・運用・取材大奮闘のワンワンチャンネルスタッフM: 検索クローラーの作成 其の二3は若干、ボクのなじみの無い言語Pythonだが、
日本語で分かりやすく説明してくれてるWebクローラ
3.
Webstemmer4はご丁寧に、JSpider(Javaで書かれたオープンソースのWebクローラ)に沿っての研究内容を公開してらっしゃいます。m(_ _)m
ただ、こちらも2006年で更新ストップ。残念・・
4.今日の井原 - 尾内研究室クローラ勉強会 レジュメ
でも、何も知らない状態からの勉強には、利用しやすい。
まずは、ここから入ってみることにする。[07/12/23]
リンク切れの為、削除。
英語のマニュアルで勉強することに・・。