我们爬取数据的时候,经常会希望定时运行爬虫,一般在凌晨的时候执行,那样挂服务器上就会减轻很大的负荷,所以我们就需要定时的任务,本文使用了scrapy框架,然后定时执行爬虫代码的方法。
声明:此方法不一定是最好的方法,但是肯定是能达到效果的方法。
网上有很多的代码介绍,最多的就是下面的方法:
import time
from scrapy.cmdline import execute
import sys
import os
import datetime
def doSth():
execute(['scrapy','crawl','lcp'])
# 想几点更新,定时到几点
def time_ti(h=20, m=24):
while True:
now = datetime.datetime.now()
# print(now.hour, now.minute)
if now.hour == h and now.minute == m:
doSth()
# 每隔60秒检测一次
time.sleep(60)
doSth()
但是上面的方法执行一次就结束了,原因可能是cmdline是scrapy框架自带的,开启的是一个主线程,任务完成主线程撤销,所以就执行一次就结束了,完全达不到我们的要求。
所以下面的方法是最简单的方法。
import time
import sys
import os
import datetime
def Dingshi():
while True:
os.system("scrapy crawl lcp")#lcp是我们爬虫的代码名字哦
time.sleep(60)
Dingshi()
我们直接就是在Linux服务器上执行一次这个Dingshi()的方法就可以了。