天氣預報已然成為人們生活中不可缺少的一部分,實時了解氣象的優劣,做到第一時間預防是至關重要的。所以,當我們需要外出時,如果能提前知道天氣的變化情況,做好預防準備措施,就能讓出行變得更加順利。
本系統為使用者提供播報天氣情況功能,每天出門前詢問「依公尺」當日的天氣情況,它便會告訴你當日溫度、能見度、風速等資訊,並給使用者一些出行建議,做好預防準備,智慧型家居讓出行變得更加簡單。具體實現流程如圖所示。
呼叫天氣情況功能的關鍵**如下:
1. if
"天氣"
in recognition_result:
2. s=recognition_result.replace(
'。',''
) 3. s=recognition_result.replace(
'?',''
) 4. s=s.replace(
'請問',''
) 5. s=s.replace(
'的天氣怎麼樣',''
) 6. s=s.replace(
'天氣怎麼樣',''
"識別錯誤,請這樣問'某某天氣怎麼樣'"
) 14. voice.playvoice(url)
15. time.sleep(2)
16. break
17. url_weather =
''+search+'?location='+index+'&key=301daef2824c41d9b3d6e0391011fd4d'
18. print(url_weather)
19. req = urllib2.request(url_weather)
20. resp = urllib2.urlopen(req)
21. context = resp.read(
) 22. weather_json = json.loads(context, encoding=
'utf-8'
)
通過呼叫接**們會得到很多資料,選取部分需要的資料即可。
根據需要我分別獲取了實況天氣、當日天氣和明日天氣情況。實況天氣的部分**如下:
23. def get_wat(wt):
24. city_weather_now = city_weather[
'now'
] 25. a= city_weather_now[
'cond_txt'
]#天氣狀況描述
26. b= numtozh(city_weather_now[
'pres'])
#氣壓
27. c= numtozh(city_weather_now[
'tmp'])
#溫度
28. d= numtozh(city_weather_now[
'vis'])
#能見度
29. e= city_weather_now[
'wind_dir'
]#風向
30. f= city_weather_now[
'wind_sc'
]#風力
31. g= numtozh( city_weather_now[
'wind_spd'])
#風速
32. weather_now_str =
"目前天氣,氣壓帕斯卡,溫度度,能見度,風向,風力,風速級;".format(a,b,c,d,e,f,g)
上述**返回的結果中包含某些機器難以識別的數字,這使得語音合成出來的效果有點差強人意,比如:-18℃等之類的資料。因此,需要對獲取結果中的特殊數字進行相關的處理。特殊數字處理的部分**如下:
#數字轉中文
def numtozh(num):
num_dict =
num = int(num)
if 100 <= num < 1000:
b_num = num // 100
s_num =
(num-b_num*100) // 10
g_num =
(num-b_num*100) % 10
if g_num == 0 and s_num == 0:
num =
'%s百' % (num_dict[b_num]
)elif s_num == 0:
num =
'%s百%s%s' % (num_dict[b_num], num_dict.get(s_num, ''
), num_dict.get(g_num, ''
))elif g_num == 0:
num =
'%s百%s十' % (num_dict[b_num], num_dict.get(s_num, ''
)) else:
num =
'%s百%s十%s' % (num_dict[b_num], num_dict.get(s_num, ''
), num_dict.get(g_num, ''
))elif 10 <= num < 100:
s_num = num // 10
g_num =
(num-s_num*10) % 10
if g_num == 0:
g_num =
'' num =
'%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''
))elif 0 <= num < 10:
g_num = num
num =
'%s' % (num_dict[g_num]
)elif -10 < num < 0:
g_num = -num
num =
'零下%s' % (num_dict[g_num]
)elif -100 < num <= -10:
num = -num
s_num = num // 10
g_num =
(num-s_num*10) % 10
if g_num == 0:
g_num =
'' num =
'零下%s十%s' % (num_dict[s_num], num_dict.get(g_num, ''
))return num
爬蟲專案實戰八 爬取天氣情況
根據天氣介面,爬取接下來一周的天氣情況。開啟這個網頁。請輸入城市名稱 cityname input host cityname url host response requests.get url content response.text soup beautifulsoup content,lx...
02 微信小程式例項開發 天氣情況
wx.getlocation 通過官方文件的api中可以看到wx.getlocation可以獲取到當前的地理位置和速度,不過獲取到的地理位置只是經緯度,而不是真正的城市名稱,但我們可以根據這個經緯度來獲取城市名稱等資訊 需要用到第三方介面 再通過城市名稱和城市id獲取對應的天氣資訊。在.js邏輯層增...
免費的獲取最近幾天內的天氣情況
function vget url curl close curl 關閉curl會話 return tmpinfo 返回資料 獲取客戶端ip位址 param integer type 返回型別 0 返回ip位址 1 返回ipv4位址數字 ip位址合法驗證 long ip2long ip ip lon...