給女票的每日天氣提醒

2021-08-14 08:28:49 字數 1584 閱讀 1991

待解決

1.請求頭中設定不壓縮

最近在某部落格上看到一篇基於python與阿里雲的簡訊傳送指令碼,覺得有意思就試著復現出來。

整體思路如下

獲取氣象網api資料→urllib包→json資料格式更便於操作

↓ 阿里雲設定→aliyun_sdk→python版本統一

↓ 每日定時執行→通過linux指令碼語言完成

找了老半天,找到了不僅顯示實時天氣,還有**功能的穩定免費的氣象api介面(瘋狂打call中…)。

由於該api支援json與xml兩種格式,利用urllib包可以輕鬆獲取對應天氣資料。

# -*- coding:utf-8 -*-

import urllib

import json

city = u'北碚'

#待查詢城市

city = urllib.parse.quote(city) #這一句很關鍵....坑太大

weather_url = '' %city

#抓取網頁資訊

req = urllib.request.urlopen(weather_url)

rs = req.read().decode() #採用utf-8解碼

#獲取當天資料,格式如下

#weather_info = json.loads(rs)['forecast']

短短幾行**完成的工作,中間碰到的坑不少。

原始部落格提供的api介面已經過時,對應資料已不再更新,於是就在度娘上找了另乙個相對比較全面的api。但是在執行到倒數第二步時,解碼失敗,錯誤**

『utf-8』 codec can』t decode byte 0x8b in position 1: invalid start byte

該url輸入的城市名通過漢字輸入。然而,都知道漢字是不能作為url輸入的,需要對其進行編碼。

在原api文件中作者採用utf-8編碼(其實是基於url的utf-8編碼),於是就將漢字轉碼為utf-8後再附上url位址,出現訪問失敗。

提取對應漢字編碼顯示如下

漢字:北碚

utf-8:\xe5\x8c\x97\xe7\xa2\x9a

url : %e5%8c%97%e7%a2%9a

可以發現,url將utf-8中的\x替換為%,這是因為url中不允許出現諸如\,這樣的字元。更加詳細的url轉碼文件參考阮一峰的部落格

部落格簡述

1.url中漢字若為路徑,則為對應utf-8編碼相關位置替換為%

2.url漢字若為搜尋關鍵字,則用的是作業系統的預設編碼

3.get和post方法的編碼,用的是網頁的編碼

4.其餘過於複雜,略過

配置個鏟鏟,簡訊模板要求太嚴格,沒特色了。

想要配置的按著阿里雲提供的api介面文件即可完成所有操作。

天氣變冷了,給父母製作乙個天氣提醒小助手

最近天氣變冷了,和父母聊天中得知,他們檢視每天的天氣預報不太方便,我記得小時候,每晚 19 30 左右,一家人都要守在電視機旁邊收聽第二天的天氣情況。要獲取天氣情況,需要乙個查詢天氣的介面,網上找了一下,一般都是註冊後送一定呼叫次數的,我選擇了乙個,免費送 500 次查詢次數的。我們看看介面的 ap...

天氣變冷了,給父母製作乙個天氣提醒小助手

最近天氣變冷了,和父母聊天中得知,他們檢視每天的天氣預報不太方便,我記得小時候,每晚 19 30 左右,一家人都要守在電視機旁邊收聽第二天的天氣情況。要獲取天氣情況,需要乙個查詢天氣的介面,網上找了一下,一般都是註冊後送一定呼叫次數的,我選擇了乙個,免費送 500 次查詢次數的。我們看看介面的 ap...

給創業者的提醒

一小朋友問一富翁說,叔叔你為什麼這麼有錢?富翁摸摸小朋友的頭說,小時候我爸給了我乙個蘋果,我賣掉它有了兩個蘋果,後來我又賺了四個蘋果。小朋友若有所思地說,哦 叔叔,我好像懂了。富翁說 你懂你妹啊,後來我爸死了,我繼承了他的財產 給創業者提個醒,不要痴迷於從閱讀成功人士的傳記中需找經驗,這些書大部分經...