背景介绍
本项目旨在实现一个基于Python的网页应用,用户输入城市名称后,自动获取该城市的实时天气信息。该应用要求支持数据解析、HTML界面生成以及事件响应机制,可在本地环境运行。
思路分析
实现要点
- 数据请求
使用requests库通过fetch()方法获取天气数据,模拟本地环境需求,无需依赖第三方API。 - JSON解析
将输入字符串(如JSON格式)解析为Python对象,例如:
python
data = json.loads(json_input) - HTML界面
使用<table>元素构建表格,显示天气信息结构化字段。 - 表单交互
创建HTML表单,允许用户输入城市名后触发请求,生成数据并展示结果。
关键步骤
- 读取用户输入
python
city = input("请输入城市名:") - JSON解析
python
import json
weather_data = json.loads("{'city': '北京', 'temperature': 22, 'wind_speed': 2}") - 生成HTML表格
html
<table border="1">
<tr>
<th>天气</th>
<th>温度</th>
<th>风速</th>
</tr>
<tr>
<td>晴</td>
<td>22°C</td>
<td>2级</td>
</tr>
</table> - 事件响应机制
python
def on_button_click():
response = fetch_weather(city)
display_table(response)
代码实现
import requests
import json
def fetch_weather(city):
url = f"http://api.weatherapi.com/v1/weatherdata.json?city={city}"
response = requests.get(url)
data = json.loads(response.text)
return {
"city": data["query"]["city"],
"temperature": data["query"]["temp"],
"wind_speed": data["query"]["wind"]
}
def display_table(data):
html_table = "<table border='1'>\n"
html_table += f"<tr><th>天气</th><th>温度</th><th>风速</th></tr>\n"
for key, value in data.items():
html_table += f"<tr><td>{key}</td><td>{value}</td><td></td></tr>"
html_table += "</table>"
return html_table
def main():
city = input("请输入城市名:")
result = fetch_weather(city)
print(display_table(result))
if __name__ == "__main__":
main()
总结
本项目实现了简单的网页天气应用,支持城市名称输入、数据解析、HTML界面生成以及事件响应机制。通过本地环境实现,时间控制在2小时内,确保代码可运行并具备结构化数据输出能力。