Linux上使用crontab命令完成定时爬虫

本文主要记录: 1、crontab的用法。
                          2、crontab与scrapy的结合。

一、crontab

  • crontab是什么
           Linux crontab是用来定期执行程序的命令。

  • crontab常用命令
           1、crontab -l : 列出当前的定时任务列表
           2、crontab -e : 执行编辑器来设定时任务

  • 定时任务设置格式
           格式:[分] [时] [日] [月] [周] [执行的操作]
           例:00 19 * * * python /root/spider/test.py 每天19:00执行python /root/spider/test.py 注意一定要是绝对路径

    图摘自思否

常用符号:

  • 星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

以下是几个例子

       1、每分钟执行一次: * * * * * command

       2、每一小时执行一次 :00 * * * * command(精确时间点) or * */1 * * * command ( / 表示频率)

       3、每小时的15和30分各执行一次 15,45 * * * * command(, 表示并列)

       4、在每天上午 8- 11时中间每小时 15 ,45分各执行一次:15,45 8-11 * * * command (- 表示范围)

       5、每个星期一的上午8点到11点的第3和第15分钟执行:3,15 8-11 * * 1 command

       6、每隔两天的上午8点到11点的第3和第15分钟执行:3,15 8-11 */2 * * command

二、crontab与scrapy的结合

       通常运行scrapy需要进入到该scrapy项目的文件夹下,所以我们不能直接scrapy crawl ……。

例如我需要每天19:00运行我部署的某天气网站的scrapy爬虫,名为chinaweather:

       1、我们需要先 cd 进入到该scrapy项目的路径下

       2、对于scrapy需要使用绝对路径,如果找不到,可以使用which scrapy找到如:/usr/local/anaconda/bin/scrapy。

       3、这个scrapy运行的时候会打印一些日志,我们用>>可以把它统一追加到一个文件中,方便检查scrapy是否正常运行。 (需要注意的是>是覆盖重写,>>是追加操作)

       使用crontab -e 编辑后,即可添加到定时任务中:
00 19 * * * cd /root/spider/weather && /usr/local/anaconda/bin/scrapy crawl chinaweather >> /root/spider/weather/weather_history.log

       最后保存退出,就会显示任命了新的定时任务:


你可能感兴趣的:(Linux上使用crontab命令完成定时爬虫)