0

私は、ユーザーがプログラムに URL の長いリスト (たとえば 100 個の URL) を提供する Python プロジェクトに取り組んでおり、プログラムは 100 個のプロセスを生成して、クローラー コードを含む JavaScript コードを実行します (を使用Apify.launchPuppeteer())。さらに、JavaScript コードは、Apify Puppeteer シングル ページ テンプレートに基づいて作成および変更されます。

ただし、100 個のプロセスでクロール コードを同時に呼び出すと、大量のメモリが使用され、遅延が発生します。Python コードは JavaScript コードによって書き込まれたファイルからの結果の読み取りを待機しているため、メモリ不足はパフォーマンスに大きく影響し、ファイル書き込みでエラーが発生します。JavaScript クローラー コードを最適化する方法はあるのでしょうか、それとも両方で改善できる点があるのでしょうか?

いくつかの編集 --- プログラムに関する追加情報: ユーザーが URL (ドメイン) のリストを指定すると、プログラムはドメイン内のすべてのリンクをクロールしようとします (たとえば、ドメイン github.com のすべてのハイパーリンクをクロールします)。

4

1 に答える 1

0

100 個の個別のクロール プロセスを起動する必要はまったくありません。Apify は、URL でいっぱいのリストまたはキューをスクレイピングできるクローラー クラスを提供します。また、同時実行を管理して、実行が CPU とメモリの制限内に収まるようにします。私たちは通常、メモリや CPU に重大な問題を起こすことなく、数百万の URL をスクレイピングします。PuppeteerCrawlerを使用します。

于 2020-04-18T09:34:10.030 に答える