如何让我的网站在每次有人访问或每隔几分钟就重新运行一些python flask代码?

问题描述 投票:0回答:2

这是我第一次开发网站,我遇到了一些问题。我有一些python代码,用beautifulsoup4抓取一些数据,并用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()
python html flask pythonanywhere
2个回答
0
投票

你需要使用调度器,检查这个 讨论类似问题的,你可以用它来调用某个函数,每隔一段时间更新一次数据。


1
投票

你的应用程序只在启动时收集一次数据。如果你想让它在每次有人访问页面时都抓取数据,你可以将你抓取和处理表格数据的代码放入相关的视图函数中,由 @app.route('/route') 封装器,每次访问时都会运行该函数。

© www.soinside.com 2019 - 2024. All rights reserved.