用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值