5

この 1 か月間、私は開始した Web クロール プロジェクトに Scrapy を使用してきました。

このプロジェクトでは、ホームページから到達可能な単一のドメイン名に含まれるすべての Web ページの完全なドキュメント コンテンツを取得します。Scrapy を使用してこれを記述するのは非常に簡単でしたが、単純に実行速度が遅すぎます。2 ~ 3 日で 100,000 ページしかプルダウンできません。

Scrapy はこの種のクロールには適していないという私の最初の考えが明らかになりつつあることに気付きました。

より良いパフォーマンスを期待して、Nutch とMetabotに照準を合わせ始めました。クロール中に保存する必要がある唯一のデータは、Web ページの完全なコンテンツと、できればページ上のすべてのリンクです (ただし、後処理で行うこともできます)。

高速で多くの並列リクエストを使用するクローラーを探しています。

4

3 に答える 3

5

これは、Scrapy ではなくサーバーのせいです。サーバーが必要以上に高速でないか、サーバー (または Web マスター) がクロールを検出し、この接続/Cookie の速度を制限している可能性があります。プロキシを使用していますか?これにより、クロールも遅くなる可能性があります。これは Scrapy の知恵かもしれません。クロールが集中しすぎると、このサーバーで禁止される可能性があります。私の C++手書きクローラーでは、人為的に 1 秒あたり 1 リクエストの制限を設定しました。しかし、この速度は 1 スレッドには十分です (1 要求 * 60 秒 * 60 分 * 24 時間 = 86400 要求/日)。興味のある方は、whalebot.helmsman {AT} gmail.com にメールを送信してください。

于 2010-09-02T13:58:30.403 に答える
2

Scrapyを使用すると、設定で同時リクエストの数とリクエスト間の遅延を決定できます。

于 2010-09-07T00:24:04.243 に答える
0

ボトルネックがどこにあるか知っていますか? whalebot.helmsman が指摘したように、制限は Scrapy 自体ではなく、クロールしているサーバーにある可能性があります。

ボトルネックがネットワークなのか CPU なのかを調べることから始める必要があります。

于 2010-09-19T19:57:25.627 に答える