使用BeautifulSoup和Flask框架实现网页内容的实时推送和更新

2023-04-17 00:00:00 框架 实时 推送

下面是一个简单的示例,使用BeautifulSoup和Flask框架实时推送和更新pidancode.com网站的标题。

from flask import Flask, render_template
from bs4 import BeautifulSoup
import requests
import time

app = Flask(__name__)

def get_title():
    url = "http://pidancode.com" # 需要获取的网页地址
    res = requests.get(url)
    soup = BeautifulSoup(res.text, "html.parser")
    title = soup.title.text # 获取网页标题
    return title

@app.route("/")
def index():
    title = get_title() # 获取网页标题
    return render_template("index.html", title=title)

@app.route("/update")
def update():
    while True:
        title = get_title() # 获取最新的网页标题
        yield "data: {}\n\n".format(title) # 使用 yield 实时推送数据
        time.sleep(5)

if __name__ == "__main__":
    app.run(debug=True)

上述代码中,我们首先定义了一个名为get_title的函数,用于从pidancode.com网站获取网页标题。然后,在Flask应用中,我们定义了一个路由函数index,用于展示当前网页标题。另外,我们还定义了一个路由函数update,用于实时推送获取的网页标题,更新前端页面。

在Flask应用中,我们使用Flask提供的render_template函数和Jinja2模板引擎,渲染HTML页面。HTML页面中使用了EventSource对象来建立实时推送连接。

在运行应用时,我们可以通过访问http://localhost:5000/update来建立实时推送连接,Flask应用将定期获取pidancode.com网站的网页标题,将最新的标题实时推送给前端页面。

相关文章