用Crontab定時運行scrapy爬蟲

腳本如下:

export LANG=zh_CN.UTF-8
spider1='spider1'
kill -9 `ps -ef | grep $spider1 | grep -v grep | awk '{print $2}'`
cd ~/work/virtual/  # 切換到虛擬環境的目錄,如果沒有使用虛擬環境,則不需要
/usr/local/bin/pipenv shell  # 激活虛擬環境
cd ~/work/spider  # 進入scrapy爬蟲項目的目錄
nohup ~/.local/share/virtualenvs/spider-MGYoPRkA/bin/scrapy crawl $spider1 > out.file 2>&1 &

解釋:

  1. 由於crontab裏沒有tty/pts(終端)這個事實,即不會執行$HOME/下的一些環境初始工作,所以需要設置export LANG=zh_CN.UTF-8,不然會報UnicodeEncodeError: 'ascii' codec can't...的錯誤;
  2. kill的作用爲每次執行前,先停掉正在運行的爬蟲;
  3. 由於crontab在運行時,有他自己的工作目錄,所以需要切換到相應目錄才能執行相應命令;

本人每五分鐘跑一次,crontab代碼爲

*/5 * * * * bash ~/work/start.sh

參考:

crontab文檔

https://blog.csdn.net/kai404/article/details/53287563

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章