Edited at

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

More than 3 years have passed since last update.


Scrapy-Redis

https://github.com/rolando/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ページ/分クロールできるようになる。