一、需求
获取某一地点的实时天气,并对特殊天气做出特殊提醒。
二、概要设计
- 获取当前实时位置
- 获取当前位置天气
- 对天气做出响应
三、详细设计
- 位置获取
可以通过GPS或者其它操作来获取设备位置,未实现,这里简单返回地址。
def get_location():
location="四川省成都市郫都区"
return location
- 天气获取
爬取网页:中国天气网。 新版的界面信息比较好,所以这里爬取新版页面。另外网页信息是异步加载的方式,选择使用selenium进行爬取。 为了简单,这里也是直接选定了特定区域的一个网页进行爬取。
from selenium import webdriver
def get_temperature(location=""):
url="http://www.weather.com.cn/weather1dn/101270107.shtml"
chrome_driver="chromedriver.exe"
driver = webdriver.Chrome(chrome_driver)
driver.get(url)
msgBtn=driver.find_element_by_class_name("msgBtn")
msgBtn.click()
togetherWeatherBox=driver.find_element_by_class_name("togetherWeatherBox")
mostWeather=togetherWeatherBox.find_element_by_class_name("mostWeather")
weather=mostWeather.text.split(":")[1].split(",")[0]
driver.close()
return weather
- 天气响应
根据天气播放特殊的音乐
from playsound import playsound
def weather_event(weather):
if weather=="雨":
playsound(r"music/兰花草(伴奏) - 卓依婷.mp3")
elif weather=="雪":
playsound(r"music/铃儿响叮当(英文版) - 黑鸭子.mp3")
else:
pass
- 主模块
if __name__ == '__main__':
loc=get_location()
wea=get_temperature(loc)
weather_event(wea)
四、todo
- 获取设备地址,通过本机的GPS或者ip进行获取,或者其它方式
- 通过地址获得中国天气网的对应页面
- 输出更多的天气信息
- selenium爬取进行优化,不显示浏览器界面,不加载图片等
- 实现线程,定时执行
- 图形界面
- 等待官网的新版界面的完善emmm
|