【python练手】获取城市天气质量

获取城市PM2.5数据
本文介绍了一个使用Python编写的简单脚本,该脚本可以从指定网站抓取城市的PM2.5数据及空气质量指数(AQI)。通过解析网页内容,能够获取并打印出城市的名称、AQI指数、空气质量状况及空气描述。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# get city pm2.5 and ranking
# python2.7

import sys
import urllib2
# import threading
from time import ctime
from bs4 import BeautifulSoup

def get_pm25(cityname):
	site = 'http://www.pm25.com/' + cityname + '.html'
	html = urllib2.urlopen(site)
	soup = BeautifulSoup(html,'html.parser')

	city = soup.find(class_ = 'bi_loaction_city') # city_name
	aqi = soup.find("a", {"class", "bi_aqiarea_num"}) # AQI index
	quality = soup.select(".bi_aqiarea_right span") # area quality
	result = soup.find("div", class_ = 'bi_aqiarea_bottom') # air description
	# print city.text
	print city.text + u'AQI Index: ' + aqi.text + u'\nAir quality: ' + quality[0].text + result.text
	print '*'*20 + ctime() + '*'*20

if __name__ == '__main__':
	#get_pm25('shenzhen') 
	if 1 == len(sys.argv):
		print "usage: ./get_pm25.py beijing guangzhou ..."
	for i in range(1, len(sys.argv)):
		get_pm25(sys.argv[i])

执行结果:

 

转载于:https://www.cnblogs.com/helloWaston/p/8169315.html

<think>好的,用户让我介绍一个实际的简单易懂的开发例子,并且希望用中文回答。首先,我需要确定用户的需求是什么。他们可能刚开始学习编程,或者对软件开发感兴趣,想要一个容易理解的例子来入门。接下来,我得找一个既简单又能覆盖基本开发流程的项目,这样用户能全面了解开发的各个环节,而不仅仅是写代码。 常见的入门项目比如待办事项应用或计算器,但用户可能希望更有趣一些。天气预报应用是个不错的选择,因为它涉及API调用、数据处理和用户界面,同时功能明确,步骤清晰。不过,我需要确保例子足够简单,不会让新手感到复杂。 接下来,考虑用户可能的背景。他们可能没有太多编程经验,所以需要详细说明每一步,比如如何注册API、处理请求、解析数据等。同时,用Python的Flask框架可能更简单,因为Python语法简洁,Flask入门容易。但也要提醒用户需要安装必要的库,比如requests和Flask。 另外,用户可能不仅想知道代码怎么写,还想了解整个开发流程,比如需求分析、设计、开发、测试和部署。所以,我应该分步骤解释每个阶段,这样他们能理解全貌。例如,需求分析部分需要明确功能,设计部分要考虑UI和API选择,开发部分分后端和前端,测试部分要检查不同输入情况,部署则可以简单介绍本地运行。 还要注意潜在的问题,比如API密钥的获取可能需要用户注册,这部分需要指导他们如何操作,但可能有些用户会觉得麻烦。所以,或许提供一个备选方案,比如使用静态数据,但这样可能不够真实。权衡之下,还是用真实API的例子更好,因为它展示了实际开发中的常见步骤。 最后,确保语言通俗易懂,避免专业术语过多,必要时解释术语。例如,解释什么是API,JSON数据格式,路由等。同时,代码示例要简洁,加上注释,帮助用户理解每一行代码的作用。可能还需要提醒用户常见的错误,比如网络连接问题,API调用限制等。 总结一下,我需要构建一个使用Flask和OpenWeatherMap API的天气预报应用示例,分步骤讲解,从注册API到部署,确保每个部分都清晰易懂,适合新手学习。这样用户不仅能动手实践,还能了解整个开发流程,为后续学习打下基础。好的</think>!这里举一个 **「天气预报小工具」** 的实际开发例子,用 **Python + Flask** 实现,简单易懂且覆盖完整开发流程: --- ### 1. 需求分析 **功能目标**:用户输入城市名,网页返回该城市的实时天气(温度、天气状况)。 --- ### 2. 技术选型 - **后端**:Python + Flask(轻量级Web框架) - **天气数据**:免费API(例如 OpenWeatherMap) - **前端**:HTML + CSS(极简表单) --- ### 3. 开发步骤 #### (1) 注册天气API - 访问 [OpenWeatherMap](https://openweathermap.org/) 注册账号,获取免费API Key(类似`abc123`的一串字符)。 --- #### (2) 后端代码(`app.py`) ```python from flask import Flask, request, render_template import requests app = Flask(__name__) API_KEY = "你的API Key" # 替换成实际Key @app.route('/', methods=['GET', 'POST']) def weather(): if request.method == 'POST': city = request.form['city'] url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric" response = requests.get(url) data = response.json() # 将API返回的JSON数据转为字典 if data["cod"] == 200: # 成功响应 weather_info = { "city": city, "temp": data["main"]["temp"], "description": data["weather"][0]["description"] } return render_template('result.html', info=weather_info) else: return "城市不存在或查询失败!" return render_template('index.html') if __name__ == '__main__': app.run(debug=True) ``` --- #### (3) 前端模板 - **`templates/index.html`**(输入页面): ```html <!DOCTYPE html> <html> <head><title>天气查询</title></head> <body> <h1>输入城市名查天气</h1> <form method="POST"> <input type="text" name="city" placeholder="例如:Beijing"> <button type="submit">查询</button> </form> </body> </html> ``` - **`templates/result.html`**(结果页面): ```html <!DOCTYPE html> <html> <body> <h1>{{ info.city }} 的天气</h1> <p>温度:{{ info.temp }}°C</p> <p>天气状况:{{ info.description }}</p> <a href="/">返回</a> </body> </html> ``` --- #### (4) 运行与测试 1. 安装依赖: ```bash pip install flask requests ``` 2. 运行程序: ```bash python app.py ``` 3. 访问 `http://localhost:5000`,输入城市名测试! --- ### 4. 核心逻辑解释 - **API调用**:通过`requests`库向天气API发送HTTP请求。 - **数据处理**:将返回的JSON数据解析成字典,提取温度、天气描述。 - **路由交互**:`GET`请求展示表单,`POST`请求处理查询。 - **模板渲染**:用`render_template`将数据动态填充到HTML页面。 --- ### 5. 扩展方向(举一反三) - 增加天气图标、未来预报 - 添加错误处理(如网络超时) - 部署到云服务器(如Heroku) 这个例子覆盖了前后端交互、API调用、数据解析等常见开发场景,适合初学者练手! 🌟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值