scrapy-doを使ったscrapyの定期実行

Scrapyを定期実行する際に複数の実施方法が考えられますが、
ここでは下記の3つの方法を比較し、自分が簡単に設定できた
scrapy-doの設定方法について紹介します。

・scrapy-do
・Scrapy Cloud (Scrapinghub)
・Scrapyd

scrapy-doはscrapydの後発として生まれたパッケージで、情報が(英語を含め、)ほとんど見当たらなかったため、この記事が今後利用される方の一助になればと思います。

実行方法の比較

Scrapy Cloud (Scrapinghub)を使った方法は(以前は無料プランでもできたみたいが、)2019年8月現在定期実行には有料プラン(月9$)が必要です。。。
また、細かいカスタマイズがしにくいです。

Scrapydのリリースは2013年に遡り、長い間利用されてきたパッケージであり、多くの情報が見られます。
ただScrapydを使った方法はcronを使ってスケジュールを登録する必要があり、設定が複雑です。

一方、scrapy-doはシンプルに設定でき、ドキュメントを見るだけで、簡単に設定できたため、こちらの方法をこの記事では紹介します。
ドキュメントのURL:https://scrapy-do.readthedocs.io/en/latest/index.html

scrapy-doの実施方法

基本的にQuick Startの手順に沿うことで設定できます。
ただしこのQuick Startでは公式が用意したSpiderを設定することになるため、記述を変更する必要があります。
上記を含め、一部コードをQuick Startから変更しています。

1.pipでscrapy-doをインストール
pip install scrapy-do

2.専用ディレクトリを作り、移動し、scrapyでdaemonとして実行
mkdir /home/user/my-scrapy-do-data
cd /home/user/my-scrapy-do-data
scrapy-do scrapy-do

3.対象プロジェクトを指定
cd (対象となるscrapy projectのルートディレクトリ)
scrapy-do-cl push-project

4.スケジュールの設定
scrapy-do-cl schedule-job --project プロジェクト名 --spider スパイダー名 --when ‘スケジュール’
スケジュールに関しては下記を参照。
https://scrapy-do.readthedocs.io/en/latest/basic-concepts.html#scheduling-specs

その他注意点

・設定には「Command Line Client」を多用します。
・spiderの内容を変更した場合、Job登録からではなく、Project登録から再実行することで、変更が適用されます。