如何让我的网站每次有人访问或每几分钟重新运行一些Python Flask代码?

0 投票
2 回答
651 浏览
提问于 2025-06-18 04:00

这是我第一次开发网站,遇到了一些问题。我有一些用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

你需要使用调度器,看看这个讨论帖,里面讲了一个类似的问题。你可以用它来定时调用某个函数,这样就能每隔一段时间更新你的数据。

撰写回答