你好,我有个python问题请教,我这里有两个文件,第一个文件叫1.py我写了一个网站爬取数据的函数并写入到数据库,并让他每天固定时间爬取一次,爬取的函数里面设置了每次爬取前都会删除旧数据,第二个文件叫2.py写了从前台接收参数传入函数,对数据库内容进行筛选,并返回前台,我现在问题是,第二个文件在接收参数对数据库筛选并将结果返回前台的的时候怎么保证数据库里面的数据是最新的呢?设置定时任务? 就是每次爬取完自动触发筛选函数,并返回前前台呢?
数据库用一个字段记录更新时间yyyy-mm-dd,查找数据时获取当天时间与数据库记录的比较,若不是当天说明还未更新
【以下回答由 GPT 生成】
首先,我们可以使用Python的定时任务模块schedule
来设置定时任务。
安装schedule
模块:
pip install schedule
然后,在1.py中编写一个用于定时执行爬取数据任务的函数,并在每次执行之前删除旧数据。代码如下:
import schedule
def delete_old_data():
# 删除旧数据的代码
def crawl_data():
# 网站数据爬取并将数据写入数据库的代码
delete_old_data()
schedule.every().day.at("08:00").do(crawl_data) # 每天08:00执行数据爬取任务
while True:
schedule.run_pending()
上述代码中,我们使用了schedule.every().day.at("08:00").do(crawl_data)
来设置每天08:00执行crawl_data()
函数,并在每次执行之前调用delete_old_data()
函数来删除旧数据。
接下来,在2.py中编写一个用于接收前端参数、筛选数据库内容并将结果返回到前端的函数。代码如下:
def filter_data():
# 接收前端参数的代码
# 筛选数据库内容的代码
# 将结果返回到前端的代码
# 在这里调用filter_data()函数,以实现对数据库内容的筛选和返回结果到前端的功能
这个函数用来实现对数据库内容的筛选和将结果返回到前端的功能。
最后,我们需要在1.py中添加触发2.py中筛选函数的代码。任务每次执行完之后,即爬取完最新的数据,我们可以使用requests
模块向2.py中发起一个HTTP请求,触发筛选函数的执行。代码如下:
import requests
def crawl_data():
# 网站数据爬取并将数据写入数据库的代码
delete_old_data()
requests.get('http://localhost:5000/filter_data') # 发起HTTP请求,触发筛选函数的执行
上述代码中的http://localhost:5000/filter_data
是2.py中筛选函数的URL地址,根据实际情况进行修改。
这样就实现了每次完成数据爬取后自动触发筛选函数,并将结果返回给前端的需求。使用定时任务模块schedule
可以实现按照固定时间定时执行任务,通过向2.py发起HTTP请求可以触发筛选函数的执行。
【相关推荐】