2


4

リアルタイム/パラレルHTTPクローラーに適したライブラリ/プラットフォームですか?

クライアントからのこの情報の要求に応じて、リアルタイムで多数のWebサイトから並行して情報を取得するクローラーを構築しています。 10〜20のWebサイトから特定のページをリクエストし、特定の情報スニペットについてコンテンツを解析し、この情報をできるだけ早くクライアントに返す必要があります。 非同期に実行したいので、クライアントは、準備ができ次第、最初の結果を表示しますが、他のリクエストはまだ保留中です。

私はRubyのバックグラウンドを持っているため、Rubyでソリューションを構築することを好みますが、並列性と速度はRubyが得意ではないことがわかっているものです。 EventMachineやhttp://github.com/pauldix/typhoeus[Typhoeus]などのライブラリはそれを改善できると信じていますが、http://nodejs.org/も強く検討しています。 [node.js]、なぜなら私はjavascriptをよく知っていて、この種のことのために構築されているようだからです。

何を選んでも、結果をクライアントに伝える効率的な方法も必要です。 私は、プレーンAJAX(ただし、サーバーのポーリングが必要)、Webソケット(古いブラウザーのフォールバックが必要)、およびhttp://github.com/lifo/cramp [ Cramp]、http://juggernaut.rubyforge.org/ [Juggernaut]およびhttp://www.pusherapp.com/[Pusher]。

共有したい経験や推奨事項はありますか?

2 Answer


1


ノードは間違いなくこのタイプのタスクを処理することができます-非同期ソケットとHTTPコミュニケートは組み込まれており、本当に快適に動作します。

私の仕事のほとんどはj / Rubyであり、サーバーサイドJavaScriptへの移行は非常に簡単です。ウェブ開発の長年はjsをよく知っていることを意味し、サーバー開発の概念は言語に関係なくほぼ同じです。

通信に関しては、http://socket.io/ [Socket.io]は、ノードでのソケット通信を処理するための優れたクライアントおよびサーバーフレームワークです。フラッシュ、ajax、およびwebsocketチャネルをサポートしているため、ほぼすべての現代で使用できます(および一部の古い)ブラウザ。


0


クローラーでJavascriptのサポートが必要な場合は、http://htmlunit.sourceforge.net/をお勧めします。 + http://celerity.rubyforge.org/で利用可能なJRubyラッパーがあります

機能(サイトから取得)には以下が含まれます。

  • 高速-時間のかかるGUIレンダリングや不要なダウンロードはありません

  • 使いやすい-シンプルなAPI

  • JavaScriptサポート

  • スケーラブル-Javaスレッドにより、テストを並行して実行できます

  • ポータブル-JVMのおかげでクロスプラットフォーム

  • 邪魔にならない-ワークフローを中断するブラウザウィンドウはありません( バックグラウンド)