資源簡介 (共40張PPT) 第 5 課 查詢天氣 ——requests 庫和 json模塊的應用廣東高等教育出版 第八冊下 新知導入圖 2-5-1 天氣預報新知講解 天氣預報對人們的生活、生產和學習等各種社會活動都有著重要意義,我們出門旅行需要根據天氣預報情況提前做好穿著準備。 互聯網上有大量的天氣數據,如何編寫從中查詢所需的數據呢?快門樂新知講解交流 我們可以通過哪些渠道查詢天氣?查詢天氣時,你主要關注哪些指標? 我們可以通過電視、手機、報紙、上網查詢等途徑查詢天氣;關注溫度、濕度、風力、風向太陽照射強度等新知講解一、分析問題 本課的任務是編寫程序查詢制定城市的天氣情況。程序要解決的關鍵問題:一是如何到指定的天氣網站獲取數據;二是如何篩選出需要的天氣數據,并按日常習慣表達出來。新知講解 要解決以上問題,在程序中需要利用以下兩個庫(模塊) (1)利用requests庫向氣象網站發送請求,獲取天氣數據 (2)利用json模塊將獲取的天氣數據轉換成便于Python處理的數據格式新知講解 本課我們利用中華萬年歷網站提供的天氣預報API接口獲取數據。例如,通過該接口獲取北京的天氣數據如下:http://wthrcdn.etouch.cn/weather_min?city=北京新知講解 上網了解有哪些網站提供API數據接口:實踐百度百科:http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=關鍵字&bk_length=600氣象局:http://m.weather.com.cn/data/101010100.html愛奇藝:http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=jsonp9新知講解二、學習新知 利用requests庫能向網頁發送請求,從而獲取數據。 requests庫屬于擴展庫需要先安裝才能使用。在DSO方式中安裝requests庫的命令為:在Python中導入該庫的命令為:(一)requests庫 pip install requests import requests 新知講解 requests 庫獲取的數據對象包含多個屬性,分別表示網頁不同的信息。例如,向Python官網發送請求,并打印多項頁面信息的代碼如下:新知講解#getpython.pyimport requests#使用requests庫的get函數向指定網址發送請求,返回數據respresp= requests.get(‘http://www.python.org/’)Print(resp.text) #打印網頁的頁面內容#打印請求的返回狀態,200表示連接成功,404表示失敗print(resp.status_code)新知講解 找一個你想查詢的網址,然后在IDLE交互模式下進行操作,觀察輸出結果,理解各項屬性的含義。1.導入requests庫2.用get()函數發送請求,返回數據存放到resp中3.再用print()函數輸出表2-5-1所列的各種屬性實踐新知講解屬性實例 描述 resp.status_code HTTP請求的返回狀態,200表示連接成功,404表示失敗 Resp.text 反饋內容的文本形式,即訪問網址的頁面內容 Resp.encoding 反饋內容的編碼格式 resp.content 反饋內容的二進制形式 resp.headers 反饋內容的頭信息 表2-5-1 反饋數據的部分屬性說明新知講解 由于從中華萬年網獲取的是字符串形式的天氣數據(JSON格式),因此要用json模塊將JSON格式的數據準換為Python的專屬數據格式,才能更方便進行處理。(二)json模塊新知講解 import json json莫快遞包含在標準庫中,導入該模塊的命令如下:新知講解 json模塊包含多個函數,其中:(1)json.dumps(),表示將Python對象轉換成JSON格式的數據(2)json.loads(),表示將JSON格式字符串形式數據轉換成Python對象 例如,將JSON格式的數據a轉換成Python對象存到b中的代碼如下:b=json.loads(a)新知講解三、設計算法根據前面分析,查詢天氣的算法思路如下:1、導入requests庫以及json模塊2、輸入查詢城市名city3、發送網絡請求,獲取天氣數據response4、將response.txet轉換成Python對象,并保存到weather中5、判斷天氣數據是否獲取成功,成功則輸出天氣數據。否則輸出“沒有該城市的天氣數據”新知講解四、編寫程序(一)獲取天氣數據根據前面的算法,獲取天氣數據的代碼如下:#weather.pyimport rsquests,jsoncity=input('請輸入要查詢的城市')#將加上城市名的API接口網址存到url中\url='http://wthrcdn.etouch.cn/weather_mini?city='+city#發送網絡請求,獲取天氣數據存到response中response=requests.get(url)#將JSON格式的數據轉換成Python對象存到weather中weather=json.loads(response.text)新知講解新知講解探究 在程序weather.py最后加上一行代碼‘print(weather)’。運行程序,輸入你所在的城市(如圖2-5-2所示),觀察輸出的天氣數據提供了哪些信息?新知講解圖 2-5-2新知講解(二)輸出天氣數據分析圖2-5-2可知,從網絡中獲取的天氣數據包含了多項內容,但這些數據難于直觀看出天氣的各項指標。我們可以逐項提取數據,再按整齊的格式顯示出來,方便閱讀。新知講解weather[‘數據項名稱’]表示weather中的某項數據,書寫格式如下:1、weather[‘desc’]是查詢結果標志,如果查詢城市存在,則weather[‘desc’]的值為“OK”,否則為“invilad-citykey”。新知講解2、 weather[‘data’]是詳細的天氣數據,里面包含4項數據依次為:(1)weather[‘data’][‘yesterday’]:昨日天氣(2) weather[‘data’][‘forecast’][0]:今日的天氣; weather[‘data’][‘forecast’][1]:明日的天氣,如此類推(3) weather[‘data’][‘ganmao’]:感冒概率(4) weather[‘data’][‘wendu’]:當前溫度新知講解weather[‘data’][‘forecast’][0]包含有五個子項內容,它們分別表示哪些氣象指標?‘data’:_________ ;’high’:___________ ;‘fengli’:________ ;’low’:_________ ;‘fengxiang’:____________觀察日期高溫風力低溫風向新知講解if weather [‘desc’]==‘OK’: #判斷輸入的城市是否存在 today=weather[‘data’][‘forecast’][0] #將當天的天氣數據存到today中在程序weather.py基礎上,刪除最后一行代碼‘print(weather)’,然后補充以下代碼,觀察輸出了哪些天氣數據。要輸出更多天氣數據,該如何修改程序?實踐新知講解print(city+’今日’+today[‘high’],today[‘low’],today[‘fengxiang’],today[‘type’]) print(‘當前溫度:’+weather[‘data’][‘wendu’]+℃’) #輸出當天的感冒概率else: print(‘沒有該城市的天氣數據’)新知講解實踐與創作 利用百度提供的查詢手機號碼歸屬地的API接口,編寫程序查詢手機號碼的歸屬地,按如圖2-5-3所示輸出查詢結果。API接口網址為:http://mobsec-dianhua.baidu,com/dianhua_api/open/location?tel=手機號碼新知講解檢測與評估1、用于發送網絡請求的庫是( ) A.random B.matplotlib C.json D.requests拓展新知D2、將JSON格式的數據a轉換成Python對象的語句是( ) A、b=json.load(a) B、b=json.loads(a) C、b=json.dump(a) D、b=json.dumps(a)拓展新知B3、以下說法錯誤的是( ) A、requests庫屬于擴展庫,需要先安裝才能使用 B、json模塊屬于擴展庫,需要先安裝才能使用 C、表達式“4+5”的結果是“45” D、json模塊能將Python對象與JSON格式的數據進行相互轉換拓展新知B4、請完善下列程序,使程序能夠輸出所獲取的頁面內容拓展新知#getbaidu.py__________________resp=requests.get('http://www.baidu.com/')resp.encoding='utf-8' #將反饋內容的編碼格式轉換為utf-8_________________________拓展新知import requestsprint(resp.encoding) 5、完成表2-5-2的學習評估,并將評估等級填寫到“我的成長記錄袋”中。拓展新知拓展新知評估項目 掌握程度 我在本課學習中的最大收獲和不足 較好 一般 較差 了解requests庫的功能 理解利用get()函數發送請求后返回對象的各種屬性 掌握利用requests庫獲取網絡數據的方法 掌握利用json模塊轉換數據格式的方法 會表達天氣數據的各項指標 初步應用requests庫和json模塊程序進行網絡數據查詢 我的學習效果達到了______等級 表2-5-2 學習評估表課堂總結一、requests庫和json模塊的運用二、提取weather中的某項數據 weather['數據項名稱']板書設計一、分析問題二、學習新知 (一)requests庫 (二) json庫三、設計算法四、編寫程序 (一)獲取天氣數據 (二)輸出天氣數據謝謝21世紀教育網(www.21cnjy.com) 中小學教育資源網站 有大把高質量資料?一線教師?一線教研員?歡迎加入21世紀教育網教師合作團隊!!月薪過萬不是夢!!詳情請看:https://www.21cnjy.com/help/help_extract.php中小學教育資源及組卷應用平臺 廣東高等教育版信息技術八年級下冊第二單元第4課教學設計課題 第5課 查詢天氣 單元 第二單元 學科 信息技術 年級 八年級學習 目標 了解requests庫的功能。 理解利用get()函數發送請求后返回對象的各種屬性。 掌握利用requests庫獲取網絡數據的方法。 掌握利用json模塊轉換數據格式的方法。 初步應用requests庫和json模塊程序進行網絡數據查詢。重點 掌握利用requests庫獲取網絡數據的方法。難點 初步應用requests庫和json模塊程序進行網絡數據查詢。教學過程教學環節 教師活動 學生活動 設計意圖導入新課 觀看圖形。互聯網上有大量的天氣數據,如何編寫從中查詢所需的數據呢?交流:我們可以通過哪些渠道查詢天氣?查詢天氣時,你主要關注哪些指標?我們可以通過電視、手機、報紙、上網查詢等途徑查詢天氣;關注溫度、濕度、風力、風向太陽照射強度等 觀看、欣賞、思考 激發學生的學習興趣,了解日常生活中的查詢天氣數據 。講授新課 分析問題 本課的任務是編寫程序查詢制定城市的天氣情況。程序要解決的關鍵問題: 一是如何到指定的天氣網站獲取數據; 二是如何篩選出需要的天氣數據,并按日常習慣表達出來。 要解決以上問題,在程序中需要利用以下兩個庫(模塊) (1)利用requests庫向氣象網站發送請求,獲取天氣數據 (2)利用json模塊將獲取的天氣數據轉換成便于Python處理的數據格式 課我們利用中華萬年歷網站提供的天氣預報API接口獲取數據。例如,通過該接口獲取北京的天氣數據如下:http://wthrcdn.etouch.cn/weather_min?city=北京 (?http:?/??/?wthrcdn.etouch.cn?/?weather_min?city=北京?) 實踐: 上網了解有哪些網站提供API數據接口: 百度百科: http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=關鍵字&bk_length=600 氣象局: http://m.weather.com.cn/data/101010100.html 愛奇藝: http://cache.video.iqiyi.com/jp/avlist/202861101/1/?callback=jsonp9 二、學習新知(一)requests庫 實踐:找一個你想查詢的網址,然后在IDLE交互模式下進行操作,觀察輸出結果,理解各項屬性的含義。 1.導入requests庫 2.用get()函數發送請求,返回數據存放到resp中 3.再用print()函數輸出表2-5-1所列的各種屬性(二)json模塊 由于從中華萬年網獲取的是字符串形式的天氣數據(JSON格式),因此要用json模塊將JSON格式的數據準換為Python的專屬數據格式,才能更方便進行處理。 三、設計算法 根據前面分析,查詢天氣的算法思路如下: 1、導入requests庫以及json模塊 2、輸入查詢城市名city 3、發送網絡請求,獲取天氣數據response 4、將response.txet轉換成Python對象,并保存到weather中 5、判斷天氣數據是否獲取成功,成功則輸出天氣數據。否則輸出“沒有該城市的天氣數據” 四、編寫程序 (一)獲取天氣數據探究: 在程序weather.py最后加上一行代碼‘print(weather)’。運行程序,輸入你所在的城市(如圖2-5-2所示),觀察輸出的天氣數據提供了哪些信息? 輸出天氣數據 分析圖2-5-2可知,從網絡中獲取的天氣數據包含了多項內容,但這些數據難于直觀看出天氣的各項指標。我們可以逐項提取數據,再按整齊的格式顯示出來,方便閱讀。觀察: weather[‘data’][‘forecast’][0]包含有五個子項內容,它們分別表示哪些氣象指標?實踐:在程序weather.py基礎上,刪除最后一行代碼‘print(weather)’,然后補充以下代碼,觀察輸出了哪些天氣數據。要輸出更多天氣數據,該如何修改程序?實踐與創作: 利用百度提供的查詢手機號碼歸屬地的API接口,編寫程序查詢手機號碼的歸屬地,按如圖2-5-3所示輸出查詢結果。API接口網址為:http://mobsec-dianhua.baidu,com/dianhua_api/open/location?tel=手機號碼 (?http:?/??/?mobsec-dianhua.baidu,com?/?dianhua_api?/?open?/?location?tel=手機號碼?)實踐與評估1、用于發送網絡請求的庫是( D ) A.random B.matplotlib C.json D.requests 2、將JSON格式的數據a轉換成Python對象的語句是( B ) A、b=json.load(a) B、b=json.loads(a) C、b=json.dump(a) D、b=json.dumps(a) 3、以下說法錯誤的是( B ) A、requests庫屬于擴展庫,需要先安裝才能使用 B、json模塊屬于擴展庫,需要先安裝才能使用 C、表達式“4+5”的結果是“45” D、json模塊能將Python對象與JSON格式的數據進行相互轉換 4、請完善下列程序,使程序能夠輸出所獲取的頁面內容 進行探究,初步了解程序解決的關鍵問題。 了解requests庫、json模塊 了解API數據接口 了解requests庫的用法。 操作、實踐 了解json模塊的用法。 教師講解,學生聽講,設計查詢天氣的算法。 輸出天氣數據的格式用法。 自主探究,學生理解和掌握。 上網搜索 聽講、了解。 學生聽老師講解,了解json模塊。 課堂小結 一、requests庫和json模塊的運用 二、提取weather中的某項數據 學生回答 利用問題形式進行總結板書 一、分析問題 二、學習新知 (一)requests庫 (二) json庫 三、設計算法 四、編寫程序 (一)獲取天氣數據 (二)輸出天氣數據 21世紀教育網 www.21cnjy.com 精品試卷·第 2 頁 (共 2 頁) HYPERLINK "http://www.21cnjy.com/" 21世紀教育網(www.21cnjy.com) 展開更多...... 收起↑ 資源列表 第5課 查詢天氣.doc 第5課 查詢天氣.pptx 縮略圖、資源來源于二一教育資源庫