前几天遇到一个很有意思的业务需求,调用一个爬虫,而这个爬虫每天只能调用一次。
在晚上找了很久,也有很多办法,但是对于一个新手来说,哪些都有不怎么看的懂。今天我就分享一个能看得懂的。
写一个相当于日志文件的文件,什么文件都行,我这里用的是json文件。
执行函数
bool= readLog() # readLog() 是读日志的函数,返回一个bool类型
if not bool:
print('Main执行了')
#Main 是我封装的爬虫函数
Main() # 如果大于24小时,重新爬取数据
#写日志文件 一天只能执行一次
writeLog() # writeLog() 是写日志的函数
break
readLog()
def readLog():
with open('log/ExeThatDay.json', 'r+', encoding='utf-8') as f:
# f.readlines() 会返回一个数组
readText=f.readlines()
# datetime.datetime.now() 放回的是今天的时间
# .strftime('%Y-%m-%d') 将今天的日期格式转化字符串格式
# readText[0] 是读取的第一个
# 判断是否相等
bool = readText[0] == datetime.datetime.now().strftime('%Y-%m-%d')
print('readLog 函数')
return bool
writeLog() 函数
#写入日志
def writeLog():
# 以 w+ 的方式 进行写文件 (w 如果文件不存在则创建,如果存在则覆盖原数据)
with open('log/ExeThatDay.json', 'w+', encoding='utf-8') as f:
f.write(str(datetime.datetime.now().strftime('%Y-%m-%d')))
print('writeLog 函数')
这样就可以一天只执行一次了,不过还是需要人为的运行。有点小瑕疵吧。