うがぁぁぁぁ。・゚・(ノД`)・゚・。
CMC海賊版のクロールの件ですが現在完了してません。
無限ループに陥ったかクローラーにとって凶悪なHTMLを
食べさせられたのかCPUを使い切ってずっと処理中のままです。
netstatを見てもアクセスの形跡が残っていないので
すでにかなりの時間処理をしているのでしょう。
一旦中止しました。これから改造します。
こういうときSQLを使っていたほうが楽だったなあとおもいます。
追記:
とりあえず無限ループになりそうな部分を修正して
こまめにセーブするようにしてクロールを再開しました。
searchc.cgiのバグが見つかりまくりで鬱になりました_| ̄|○
さっきからバグのオンパレードです_| ̄|○
影響が無い地味なところでバグってます。
クロールの状況を見ていると最終的には半分以下になりそうです。
5/10までにはおそらく1000ページを下回るでしょう。
さらに追記:高速化とレジューム機能を搭載しました。
高速化はHTMLボティを徹底的に捨てることで実現しました。
10秒間のアクセスウェイトも取っ払いました。
見違えるようにはやくなりました(笑
しかし更なる問題が発覚_| ̄|○
ISO-2022-JP(JIS)を認識することが出来ませんでした。
文量が少ないのかJcode.pmでは自動認識できないみたいです。
サーチエンジンと文字化けは切っても切れない縁なので
何とかしないといけませんが最終的にどうにもならないかもしれません。
METAからIOS-2022-JPの文字列を検出するかなあ・・・
この件の修正は時間がかかると思います。
追記:
最初のクロールが完了しました。
次から次にバグが発覚して炎上しております。
消化班マダー
追記:
文字コードのバグを修正しましたのでもう一度巡回中です。
一部文字化けの問題が発生しましたが修正しました。
次回のクロールでは大丈夫でしょう。
Jcode.pmではJISのみまとまった量のテキストを食べさせないと
うまく変換してくれないようです。
TrackBack URI : http://blog.wapiko.jp/wp-trackback.php?p=247
Comments (2)
大変そうですね、お疲れさまです。
参考になるかわかりませんけれど、CMCでのやり方はこんな感じでした。
ロボットが走る時間になったら、親ロボットは私へロボットが起動した旨のメールを送り、タイムアウト用のタイマーを起動します。
次に、URLの入ってる基本データーベースからURLを20分割にして、それぞれのファイルに落とし込み、子ロボットを20個起動させます。
子ロボット達は受け持ちのURLが詰まったファイルを受けとり、タイムアウト用のタイマーを起動します。
上から順番にURLのサイトへアクセスして取得し、まずはサイトの漢字コードを把握して自分の都合が良いコードへ変換します。
メタタグを解析し、情報を収集し、情報の正当性をチェックし、結果を更新ファイルへ追記し、ログを残します。
タイマーをリセットし、次のURLを収集します。
自分の受け持ちのURLを全て巡回したら、親ロボットへ通知し、プロセスを終了します。
親ロボットは、子ロボットがタイムアウトするか、全ての子ロボットが収集を完了したのを確認したら、更新ファイルをもとに検索データーを作成します。
検索データーベースをインデキシングして、検索できるようにします。
ログを更新し、エラーになったURLなどを抽出します。
親ロボットが終了した旨、私へメールを送信してプロセスを終了します。
子ロボットを20個も起動するのは、なんらかの原因でURLを収集できずにロボットが停止してしまっても、被害を最小限にしてロボット収集を完了させて最新の検索結果を得られるようにするためです。
CMCに登録して下さる人のなかには、けっこーロボットにいたずらするひとがいましたよ。
メタタグにバイナリーを食わせてみたり、更新結果に何MByteも食わせてみたり、なんかよくわかんないUNIXのコマンドを食わせてみたりとか・・・
コメント by しのぶ — 2008 年 4 月 26 日 @ 8:17 PM
しのぶさんこんばんは♪
なるほど~~複雑ですね。
私は単純に100URL毎にセーブ、更新する仕様にしました。
クロールは1時間ほどで終了しました。
BODYを積極的に捨てるようにしたのが効果があったみたいです。
変なものを食べさせる実験は今度してみようと思います(笑
ちなみに制御文字は一応捨てるようにしてます。
コメント by わぴこ — 2008 年 4 月 26 日 @ 10:48 PM