如何让我的网站在每次有人访问时或每隔几分钟重新运行一些 python flask 代码?
How can I get my site to rerun some python flask code every time someone visits or every few minutes?
这是我第一次开发网站,遇到了一些问题。我有一些 python 代码可以使用 beautifulsoup4 抓取一些数据并使用 flask 在我的网站上显示数字。但是,我发现我的站点根本不会自动更新这些值,而只会在我手动重新加载主机时更新。
我怎样才能让我的 python 脚本 "re-scrapes" 每次访问者访问我的网站,或者每 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()
您需要使用调度程序,查看讨论类似问题的 thread,您可以使用它来调用某个函数,每隔一段时间更新一次数据。
您的应用程序仅在启动时收集一次数据。如果您希望它在每次有人访问该页面时都抓取数据,您可以将抓取和处理 table 数据的代码放入 @app.route('/route')
包装器指示的相关视图函数中,并且每次访问该函数时都会 运行。
这是我第一次开发网站,遇到了一些问题。我有一些 python 代码可以使用 beautifulsoup4 抓取一些数据并使用 flask 在我的网站上显示数字。但是,我发现我的站点根本不会自动更新这些值,而只会在我手动重新加载主机时更新。
我怎样才能让我的 python 脚本 "re-scrapes" 每次访问者访问我的网站,或者每 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()
您需要使用调度程序,查看讨论类似问题的 thread,您可以使用它来调用某个函数,每隔一段时间更新一次数据。
您的应用程序仅在启动时收集一次数据。如果您希望它在每次有人访问该页面时都抓取数据,您可以将抓取和处理 table 数据的代码放入 @app.route('/route')
包装器指示的相关视图函数中,并且每次访问该函数时都会 运行。