2010-12-27 3 views
1

Webをクロールして100万レコードのユーザー名または電子メールをデータベースに挿入するスクリプトを作成する必要があります。 このスクリプトは、python、ruby、phpなどの任意のタイプのものがあります。web crawling、ruby、python、cassandra

可能であれば、私は可能な限り教えてください。

おかげ

答えて

0

その可能性は、あなたのマシンのパフォーマンスとあなたのインターネット接続にもよるが、いくつかの時間がかかることがあります。
PHPのcURLライブラリを使用して自動的にWebリクエストを送信すると、ライブラリを使用してデータを簡単に解析できます(例:simplHtmlDOM)。ネイティブPHP DOMを使用します。しかし、メモリが不足していることに注意してください。また、Webブラウザではなくシェルからスクリプトを実行することを強くお勧めします。また、マルチカール機能を使用してプロセスを固定することも検討してください。

これは非常に簡単で実装は簡単ですが、マルチスレッドではこのシナリオではパフォーマンスが大幅に向上するため、提案した他の言語を使用することをお勧めします。 Apache HttpClientライブラリを使用して簡単にJavaでこれを行うことができ、DOMを操作し、ネイティブxパスサポート、正規表現を使用してデータを抽出するか、Javaで多くのサードパーティDOM実装の1つを使用できます。

JavaライブラリHtmlUnitをチェックすることをお勧めします。あなたの人生をはるかに楽にすることができますが、そのためにパフォーマンスが低下する可能性があります。優れたマルチスレッド実装では、パフォーマンスは大幅に向上しますが、悪い場合はプログラムが悪くなる可能性があります。ここで

はpythonのためのいくつかのリソースです:
http://docs.python.org/library/httplib.html
http://www.boddie.org.uk/python/HTML.html
http://www.tutorialspoint.com/python/python_multithreading.htm

0

私はクロール側の少しを追加します。 あなたはウェブをクロールしたと言いました。ここでは、クロールの方向(ページを取得した後、次に訪問するリンクが非常に重要になります)です。しかし、すでにシードURLリストと呼ばれるWebページのリストがある場合は、ダウンロードしてreqdを解析するだけです。データ。電子メールアドレスを解析するだけであれば、正規表現を使用することができます。 htmlには電子メール用のタグはないので、htmldomパーサはあなたを助けません。

1

また、探しているものを実行するApache NutchとApache Goraも見てください。 Nutchは実際にGoraが結果をCassandra、Hive、またはMySQLに保存する実際のクロールを行います

+0

私はそれが遅いことを知っていますが、これはあなたの質問が尋ねられ答えられてから来ています。 –