#main.py
from flask import Flask,render_template,request,redirect
import ree
url = input()
ree.get(url)
app = Flask(__name__)
@app.route('/')
def index():
global url
while True:
if(url+request.full_path!=url and request.full_path!="/?"):
url = request.full_path
get(url)
return render_template('index.html')
else:
return render_template('index.html')
app.run(host='0.0.0.0', port=5000, debug = True)
#ree.py
import requests
import time
import os
def get(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
}
res = requests.get(url, headers=head)
with open("templates/index.html", "w", encoding="UTF-8") as file:#将爬到的html保存,供flask使用
file.write(res.text)
Flask 的路由机制是基于请求的,当一个请求到达 Flask 时,它会匹配该请求的 URL 和已注册的路由,如果匹配成功,就会调用对应的函数进行处理。在您的代码中,您在 index() 函数中使用了一个无限循环,这会导致该函数无法继续处理其他请求,从而导致网页无法正常访问。
解决方案:
使用 JavaScript 来实现网页的实时镜像。您可以在页面上使用 JavaScript 定时发送请求来获取最新的页面内容,并进行更新。
使用 WebSockets 来实现实时通信。您可以使用 WebSockets 在服务器端和客户端之间建立一个双向的连接,这样就可以在服务器端检测到网页的变动,并将变动通知到客户端进行更新。
Django 是一个强大的 Web 框架,它可以帮助您快速构建高质量的 Web 应用程序。Django 提供了一系列功能,如路由系统、模板系统、数据库支持等,使得开发 Web 应用变得更加容易。
可以用 Django 实现实时镜像网站,但是实现方式和 Flask 不同。可以使用 Django 提供的 Channels 框架来实现 WebSocket 通信,这样就可以在服务器端检测到网页的变动,并将变动通知到客户端进行更新。
此外,Django 也有一个类似于 Flask 的框架 Django-REST-framework,可以用来做API的开发,与前端进行交互。
可以借助它来实现实时镜像网站。
Flask和Django都可以实现实时镜像网站,两者实现方式不同,Flask可以使用 JavaScript 和 WebSockets 两种方式,Django可以使用 Channels 和 Django-REST-framework 两种方式。