如何让我的网站每次有人访问或每几分钟重新运行一些Python Flask代码?
这是我第一次开发网站,遇到了一些问题。我有一些用beautifulsoup4抓取数据的python代码,并通过flask在我的网站上显示这些数据的数量。然而,我发现我的网站根本不会自动更新这些值,只有在我手动让主机重新加载时才会更新。
我该如何让我的python脚本在每次访客访问我的网站时“重新抓取”数据,或者每隔大约5分钟抓取一次呢?任何帮助都将非常感激!强调的文本 主机 - Pythonanywhere
这是我当前的后端python代码:
import bs4 as bs
import urllib.request
from flask import Flask, render_template
app = Flask(__name__)
link = urllib.request.urlopen('https://www.health.pa.gov/topics/disease/coronavirus/Pages/Cases.aspx')
soup = bs.BeautifulSoup(link, 'lxml')
body = soup.find('body') # get the body so you can do soup.find_all() inside it
tables = soup.find_all('table')
for table in tables:
table_rows = table.find_all('tr')
for tr in table_rows:
td = tr.find_all('td')
row = [i.text for i in td]
if row.count('Bucks') > 0:
print(row[1])
# Bucksnum shows the amount of cases in bucks county,
bucksnum = str(row[1])
data = bucksnum
# this is the part that connects the flask file to the html file
@app.route("/")
def home():
return render_template("template.html", data=data)
@app.route("/")
def index():
return bucksnum
if __name__ == '__main__':
app.run(host='0.0.0.0')
index()
相关问题:
- 暂无相关问题
2 个回答
1
你的应用程序只在启动时收集数据一次。如果你想让它在每次有人访问页面时都获取数据,你可以把获取和处理表格数据的代码放到一个特定的视图函数里,这个函数是由@app.route('/route')
这个装饰器标记的。这样,每次访问这个页面时,这个函数就会被执行。
0
你需要使用调度器,看看这个讨论帖,里面讲了一个类似的问题。你可以用它来定时调用某个函数,这样就能每隔一段时间更新你的数据。