scrapy-redisを使って、redisを使ったクローリングを試してみる その1(基本的な設定)

ScrapyでRedisを使う際にscrapy-redisというライブラリがあります。

・scrapy-redis
https://github.com/rmax/scrapy-redis

スケジューラ(起動・入力)やパイプライン(出力)でRedisを利用できるので、フロー的な業務に適した作りになっています。

それぞれ別の機能ですので、パイプラインだけ分けるなどといったことも可能です。

スケジューラーとしてのキューをコントロールできるので、クローラーを途中停止したり規模化をはかったりなどにも向いているようです。

ただ、ドキュメントが少なく日本語での設定ドキュメントが少ないので利用が若干大変が試してみます。

 

scrapy-redisを試してみる

Scrapyとredisのインストールは以下で実施します。

★CentOS環境の python3.6(pyenv環境)で Scrapy を利用してみる(Scrapy その1)
https://developer-collaboration.com/2018/12/07/centos-python3-6-scrapy-install/

★CentOS7系の最新版のredisをyumでインストール
https://developer-collaboration.com/2018/12/20/centos7-redis-install/

 

上記の記事の「sample_crawler」というプロジェクトで実施しまします。

まず、インストールを実施します。

こちらで準備が完了です。

 

最初にredisのキューの状況を確認してみます。

何もないですね。

 

さて、それでは設定です。

「settings.py」に以下の記述を追加します。

 

そして、spiderの設定です。

上記記事の「spiders/devcolla.py」を編集します。

「Spider」関連のクラスの読み込みを変更しています。

itemsなども読み込んでいますので、そちらもご確認ください。

 

それでは起動を行います。

特に出力の設定は行いません。

この状態でscrapyのプロセスが起動したままになります。

INFO: Reading start URLs from redis key ‘devcolla:start_urls’ (batch size: 16, encoding: utf8」の行にあるように、「devcolla:start_urls」というキーがredisのキューに入るまで待機を行っててくれます。

 

さて、ここでredisにキューを追加してみます。

以下のようにspider名をつけたキューの「start_urls」を読み込んでくれます。

 

上記のようにキューを実施すると、待機中のプロセスで以下の表示が行われます。

自動的に読み込みを行ってくれました。

こちらで基本的な動作は完了です。

 

最後にredisの状態を確認してみます。

キューはredisからは削除されているので、実施ジョブの整理などは特にいらないようですね。

今回はこの辺で。

★関連記事
scrapy-redisを使って、redisを使ったクローリングを試してみる その2
scrapy-redisを使って、redisを使ったクローリングを試してみる その3(パラメーターを利用してのクローリング:use parameter)