# Python Flask Web App: Simple URL Handling with GET and Response Display


问题背景

随着网络开发的普及,我们常需实现简易的Web应用,通过输入URL访问指定内容。该任务需要实现网络请求、文件读写和响应显示三大核心功能,同时要求在Python Flask框架下实现,且仅本地运行。本项目要求3天的时间,强调技术关键点,旨在展示网络通信、数据处理及用户交互的实践。

技术思路

1. 网络请求与接口调用

利用Python的requests库,实现GET请求的发送。通过requests.get()方法,可获取指定URL的响应内容。代码示例展示如何处理响应数据:

import requests

url = "http://example.com"
response = requests.get(url)
print("Response Status:", response.status_code)
print("Content-Type:", response.headers["Content-Type"])
print("Content:", response.text)

2. 文件读写与数据处理

响应内容需读取并处理,可能需要将其转换为HTML格式。使用response.text读取响应内容,并通过Flask的路由返回给前端。例如,在Flask应用中,路由处理URL获取响应内容:

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/get')
def handle_url():
    url_input = request.args.get('url')
    if url_input:
        print("Received URL:", url_input)
        response = requests.get(url_input)
        return render_template_string("HTTP/1.1 200 OK\nContent-Type: text/html\n<html><body><h1>World</h1></body></html>"), 200
    else:
        return "Error: URL not provided", 400

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

3. GUI设计与事件响应机制

实现响应内容的显示功能,使用Flask的render_template_string处理HTML响应。该方法可将响应内容直接返回给前端,无需额外渲染HTML模板,提升性能。

代码实现

1. 发送GET请求

import requests

url = "http://example.com"
response = requests.get(url)
print("Response Status:", response.status_code)
print("Content-Type:", response.headers["Content-Type"])
print("Content:", response.text)

2. 处理响应内容

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/get')
def handle_url():
    url_input = request.args.get('url')
    if url_input:
        print("Received URL:", url_input)
        response = requests.get(url_input)
        return render_template_string("HTTP/1.1 200 OK\nContent-Type: text/html\n<html><body><h1>World</h1></body></html>"), 200
    else:
        return "Error: URL not provided", 400

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

总结

本项目通过Python Flask框架实现了一个简易的网页应用,成功实现了网络请求、响应内容读写及用户交互功能。代码示例展现了网络请求的核心技术,同时展示了数据处理和响应显示的实践。项目的时间安排合理,强调了网络通信的关键点,并突出技术实现的价值。通过本地运行,项目能够有效解决问题,提升开发效率。