爬虫的定时及自动执行
这里主要介绍使用 Linux 中自带的「crontab」命令完成定时任务。
这里常使用的命令是:
crontab -e
:进入编辑模式,里面写入定时任务。crontab -l
:进入阅览模式,查看里面的内容。
定时任务的书写格式
1、普通爬虫
# 爬虫程序 spider.py
def main():
#爬虫程序体
pass
if __name__=='__main__':
main()
此时,crontab -e
进入编辑模式,书写格式为:
[分] [时] [日] [月] [周] 命令
例如写入:00 21 * * * python3 /home/ubuntu/python_works/spider.py >> /home/ubuntu/python_works/run.log
上面的意思是每天 21 点 00 分使用 python3 命令执行指定路径下的 spider.py 文件,并输出日志到指定文件。
解释:
(1)上面的 *
是通配符。代表任意值,类似的还有:
逗号(,
):指定一个列表范围,例如,「00 12,21,00 * * *」代表每 12,21,00 点执行一次。
中杠(-
):指定整数之间的范围,例如,「00 12-19 * * *」代表 12-19 点之间每隔一小时执行一次。
斜杠(/
):指定时间的间隔频率,例如,「00 12-22/2 * * *」代表 12-22 点之间每隔 2 小时执行一次。
(2)>>
意思是将 py 文件中 print 输出内容保存在指定文件里,以追加的方式;
>
是以覆盖重写入的方式。
2、框架爬虫
如已写好一个爬虫项目,爬虫主文件路径为 /lagou/lagou/spiders/lg.py。
在 crontab -e
编辑模式中
先写好时间
cd 到爬虫主文件里
scrapy 命令所在路径下,执行
scrapy crawl lg
最后可输出日志到指定文件
如:
00 19 * * * cd /home/ubuntu/python_works/lagou/lagou/spiders && /usr/local/anaconda/bin/scrapy crawl lg >> /home/ubuntu/python_works/lagou/lg_run.log
若不知道 scrapy 命令的路径,可用 which scrapy 查找。
欢迎各位看官及技术大佬前来交流指导呀,可以邮件至 jqiange@yeah.net