第9章 Scrapyのスケジュール
ここではScrapyで作ったクローラーを定期的に実行する方法として、cronの設定やScrapingHubの使い方をまとめておきます。
cronはUNIX系のシステムに常駐するデーモンプログラムの1つ。デーモンとは、メインメモリ上に常駐して機能を提供するバックグラウンドプロセスの一種で、あらかじめ指定 した時間に処理を実行したりするもの、とのことです。
cronの設定は下記のコマンドから行いますが、jobがない場合、このように表示されます。
$ crontab -l
crontab: no crontab for <user name>
そのため、初めてcronを利用する場合は
-e
で実行します。$ crontab -e
jobの指定方法は、左から「分 時 日 月 曜日 コマンド」となります。曜日は日曜日の0始まりです。下記の設定であれば、23時45分、日、月、曜日はなんでも良いということになるので、毎日23時45分に下記のhello.pyが実行されることになります。ログファイルが必要なければ、
>>
は不要です。cronのjobの登録方法は他にもあるみたいなので、調べてください。crontab guruで調べるのが簡単かもしれません。45 23 * * * [Python3のパス] [実行ファイルのパス] >> [実行結果やエラーログのパス] 2>&1
python3のフルパスは
which python3
で見つかります。$ which python3
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3
# hello.pyの中身
import sys
import datetime
print('Python:' + sys.version)
print(datetime.datetime.now())
print('----------')
>>
はリダイレクトという機能です。ターミナルに出力される「標準出力」をファイルへ出力することをリダイレクトといいます。要するに、「画面出力された文字をファイルに保存する」と考えればわかりやすいのかもしれません。組み合せ次第でいろんな事ができるので下記にまとめておきます。形式 | 内容 |
コマンド > ファイル | コマンドの結果をファイルへ書き込む |
コマンド < ファイル | ファイルの中身をコマンドの標準入力へ渡す |