大量のドメインに対してクロールするならScrapy-Redisがオススメ


Scrapy-Redis

pip install scrapy_redis

して基本settings.pyを置き換えるだけ

導入するメリット

  • scrapyのスケジューラ、start_urlsのキュー、パイプラインにredisを使える(別々の拡張設定)
    • 外部連携や多重化が容易
  • スケジューラのキューが永続化されるので、途中でクローラーを止めても再開が可能
  • 同じSpiderをマルチプロセスやマルチサーバで複数起動して、同時に並列でクローリングできるようになる
  • pipelineで出力をredisに設定することで、後続の処理を別のワーカプロセスで処理できる
    • DBにバルクで書き込む
    • トークナイズする
    • 機械学習のストリームに流す
  • spiderのstart_urlsもredisにできるので、外部サービスから開始URLのキューにプッシュできる。

Scrapyはチューニング次第で1コアで1000ページ/分程度いけるから(CPU 100%食いきれる)、
Scrapy-Redisを使うことで、コア数 * 1000ページ/分クロールできるようになる。