scrapy定时执行抓取任务
当我们写好抓取数据的脚本.py文件时,需要输入命令:scrapy crawl projectName 来执行。
那么怎么做一个定时器,让这个.py脚本进行定时执行呢?
步骤如下:
1、写一个shell脚本,加入命名为test.sh内容如下:
- #! /bin/sh
- export PATH=$PATH:/usr/local/bin
- #进入.py脚本所在目录
- cd /data/apps/scrapy/weather/weather/spiders
- #执行.py中定义的项目example,并指定日志文件,其中nohup....&表示可以在后台执行,不会因为关闭终端而导致程序执行中断。
- nohup scrapy crawl example >> example.log 2>&1 &
2、通过crontab -e命令新增一个定时器,定时执行上面的shell脚本test.sh:
- 05 8,12,18 * * * (/bin/sh /data/apps/scrapy/weather/weather/spiders/test.sh)
crontab文件的含义:
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
- 05 8,12,18 * * * (/bin/sh /data/apps/scrapy/weather/weather/spiders/test.sh)