0%

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

       使用scrapy的时候,有时候不想每次都手动敲命令行,就可以使用crontab配置scrapy定时任务在后台运行,这样不用人工干预,每个周期都可以定时自动执行啦。本文主要介绍两方面:
  1、crontab的用法  2、使用crontab配置scrapy定时任务。

一、crontab

crontab是什么

       crontab 是 Linux 的一个计划任务管理工具,你可以在那上面添加一些任务,在指定的时间让它在后台运行,经常用来定时清除系统或程序的缓存,可以定时执行任意的脚本等等,这些功能在 Linux 上都是非常有用的,尤其是当 Linux 做为服务器来用时。

crontab常用命令

命令 解释
crontab -l 列出当前的定时任务列表
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 编辑后:

1
00 19 * * * cd /root/spider/weather && /usr/local/anaconda/bin/scrapy crawl chinaweather >> /root/spider/weather/weather_history.log

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



-------------本文结束感谢阅读-------------