做了个爬虫去定时抓自己发布在cnblogs更新的文章,考虑用corntab定时任务驱动
crontab 任务配置
crontab配置规则就不啰嗦了,网上很多介绍,规则很容易功能却很强大。
然后我发现只有.cron
后缀的文件才能被配置crontab run_scrapy.cron
crontab 的坑
crontab中没有读取到环境变量,因此所有命令必须手动写全,或者执行一个脚本,在脚本中导入环境变量
*/1 * * * * /usr/bin/bash echo "U'll see me next miniute"
#!/usr/bin/bash
. ~/.bash_profile
ps -ef | grep 'scrapy'
scrapy 的坑
scrapy 的命令必须在项目文件夹下才能正常运行,而且,scrapy本身也有环境路径
[root@iZrj9acq02ar6zvxx6ovrcZ scripts]# whereis scrapy
scrapy: /usr/local/bin/scrapy
run_scrapy.cron
类似于这样:
1 6 * * * /var/www/django-web/blog/scripts/run_blogs.sh >> crawl_blog.log
run_scrapy.sh
:
#!/bin/bash
echo "*****crontab begin:*****"
cd /var/www/django-web/blog/cnblogs
#/usr/local/bin/scrapy crawl cnblogs -s LOG_FILE=/tmp/scrapy.log >> /tmp/crawl_blog.log &
/usr/local/bin/scrapy crawl cnblogs >> /tmp/crawl_blog.log &
echo $(ps -ef | grep "scrapy crawl cnblogs" |grep -v 'grep' |awk -F ' ' '{print $2}')