You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Flask网页抓取应用在页面刷新时展示最新抓取结果?

问题解答

这个现象正常吗?

这是完全正常的,问题出在你的代码执行时机上。

如果网页抓取代码写在Flask应用初始化的顶层(也就是路由函数index()外面),那它只会在应用进程启动时执行一次——因为这部分代码属于应用的初始化逻辑,只会在Waitress加载你的Flask应用时运行一遍,之后所有请求都会复用这次抓取的旧数据,不管怎么刷新页面都不会重新执行。

如何实现每次刷新都重新抓取?

解决方法很直接:把网页抓取逻辑移到路由函数内部,也就是index()函数里面。这样每次用户访问/路由(刷新页面)时,都会触发一次新的抓取操作,获取最新的数据。

修改后的代码示例:

from waitress import serve
from flask import Flask, render_template
import requests

app = Flask(__name__)

@app.route("/")
def index():
    # 把网页抓取代码移到这里,每次请求都会执行
    news_sites = []  # 示例变量,根据你的实际需求替换
    # --- 你的网页抓取逻辑开始 ---
    response = requests.get("目标网页的URL")
    # 这里添加解析响应、提取目标数据的代码,最终赋值给news_sites等变量
    # --- 你的网页抓取逻辑结束 ---
    return render_template("info.html", news_sites=news_sites)

if __name__ == "__main__":
    serve(app, host='0.0.0.0', port=8080)

额外注意事项

  • 反爬风险:频繁刷新页面会导致频繁请求目标网站,容易触发对方的反爬机制(比如IP封禁)。如果数据不需要实时更新,可以给抓取逻辑加缓存,比如用functools.lru_cache(记得设置合理的过期时间)或者外部缓存工具(如Redis),平衡实时性和服务器压力。
  • 异常处理:建议给requests请求添加异常捕获(比如requests.exceptions.RequestException),避免抓取失败时直接导致页面崩溃,给用户返回友好的错误提示。

内容的提问来源于stack exchange,提问作者KMFR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:10:03