2016-05-16 14 views
1

私はスパイラルで広範なクローラを構築しようとしていますが、同時に多数のスパイダーを同時に実行できますが、同時に同じドメインをクロールすることはできません。スクラブで広範囲にクロールする

答えて

0

複数のスパイダーを同じドメインで実行する目的は何ですか? クロールプロセスを高速化したい、またはスパイダーが異なるロジックを持っていますか?

  1. まず、docsをご覧ください。 settings.pyファイルでCONCURRENT_REQUESTS = 100を増やす必要があります。 1つのスパイダーで十分です。

  2. スパイダーのロジックが異なる場合は、スパイダーごとに個別のクラスを作成してください。

+0

はい異なるドメインで複数のスパイダーを実行したいと思います。質問が不明な場合は申し訳ありません。 CONCURRENT_REQUESTS = 100とCONCURRENT_REQUESTS_PER_IP = 1に設定した場合、これで問題は解決しますか?100種類のスパイダーがそれぞれ独自のドメインをクロールしますか? – codeer

+0

これは同じスパイダーになります。[docs](http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests-perip)[+](http: /doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests) –

0

私はどこから来ているのか分かります。単一のWebサイトごとに制限を遵守しながら、多数のクロールを並行して実行できるように、ドメインごとに分散調整が必要です。これを行うには、クモの間で共有される何か(データベース?)と会話するミドルウェアを開発する必要があります。

このようなシステムの1つは​​です。

ご覧のとおり、すべてのドメインに「ハード」な仕方で細分化された分散制御をサポートしています。

これはまた、あなたが探しているものと同様のデュープ除去機能を持っています(here参照)。主な相違点は、Itemではなくデリートされていませんが、これはさらに優れているはずです。

+0

はい、これは私が探していることです。私はしたい1.私のスクレーパーは、ドメインの同じプールを使用してください。2.すべてのスパイダーは、重複してフィルタリングされているスクラップされたアイテムの同じプールにそのアイテムを返します。 3.同じドメイン上でクロールを開始しないようにします。ところで、スクラップクラウドにはこの機能が組み込まれていますか?私は今、彼らのウェブサイトを見た。 – codeer

+0

上記のコメントを更新しました。 – neverlastn

0

また、必要なものが分散型クローラの場合は、代わりにNutchまたはStormCrawlerを使用できます。どちらも分散クラスタ上で動作するように設計されています。前者はApache Hadoopと後者のApache Stormを使用しています。

関連する問題