python入門第十四課:API的調用

2021-01-10 傫傫若遺

本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes

我們經常需要使用Python調用Web應用編程接口(API),大部分的API返回的都是易於處理的格式(如JSON或CSV),本節演示如何處理返回類型為JSON的API。

一、調用天氣API

比如需要獲取今天及後續幾天的天氣情況,我們可以調用天氣API,網上有很多接口,大家可以自己百度搜索。我們在瀏覽器輸入API的地址,返回了一串字符串。

這是一個JSON格式的字符串,為了方便查看,我們用notepad++進行格式化。需要安裝JSON Viewer插件,在「插件->插件管理」裡面可以找到這個插件。安裝後選擇「Show JSON Viewer」會展示左邊的樹狀結構,方便我們進行分析,點「Format JSON」後會將這段文字自動排版,便於我們分析內容。

我們要做的是用Python訪問這個連結,獲取返回結果,然後對結果進行分析,提取其中的天氣數據,代碼如下:

import requests# 執行API調用並存儲響應url = 'xxweather_mini?citykey=101010100'r = requests.get(url)print("Status code:", r.status_code)# 將API響應存儲在一個變量中response_dict = r.json()# 處理結果forecast = response_dict['data']['forecast']for item in forecast:print(item['date'],item['type'],item['low'],item['high'])

代碼說明:

1、調用API接口需要用到requests模塊,如果沒安裝,可以在CMD命令行下輸入如下命令進行安裝:

pip install --user requests

2、url參數就是我們要調用的API接口地址。

3、使用requests.get請求WEB地址,將相應回來的對象存儲在變量r中。

4、響應對象有一個status_code 的屬性,狀態碼200表示請求成功。

5、使用方法json() 將返回內容轉換為一個Python字典

6、通過response_dict['data']['forecast']找到forecast節點。

7、用for循環提取出天氣信息。

二、擴展

Request返回的對象有很多屬性,我們都可以列印出來看看。

r.encoding #獲取當前的編碼r.encoding = 'utf-8' #設置編碼r.text #以encoding解析返回內容。字符串方式的響應體,會自動根據響應頭部的字符編碼進行解碼。r.content #以字節形式(二進位)返回。字節方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮。r.headers #以字典對象存儲伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則返回Noner.status_code #響應狀態碼r.raw #返回原始響應體,也就是 urllib 的 response 對象,使用 r.raw.read()r.ok # 查看r.ok的布爾值便可以知道是否登陸成功#*特殊方法*#r.json() #Requests中內置的JSON解碼器,以json形式返回,前提返回的內容確保是json格式的,不然解析出錯會拋異常r.raise_for_status() #失敗請求(非200響應)拋出異常

本節介紹了如何用Python調用WEB應用編程接口(API),並對返回的數據進行解析。感謝您的耐心觀看!長按文末點讚送三連,支持本文作者多寫點~

#Python入門教程#

相關焦點

  • PySpark源碼解析,用Python調用高效Scala接口,搞定大規模數據分析
    同時,Python 語言的入門門檻也顯著低於 Scala。為此,Spark 推出了 PySpark,在 Spark 框架上提供一套 Python 的接口,方便廣大數據科學家使用。.*")java_import(gateway.jvm,"org.apache.spark.api.python.*")java_import(gateway.jvm,"org.apache.spark.ml.python.*")java_import(gateway.jvm,"org.apache.spark.mllib.api.python.*")#TODO(davies):moveintosqljava_import
  • gRPC Python 入門到生產環境
    一、先了解幾個概念RPCRPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程電腦程式上請求服務,而不需要了解底層網絡技術的協議。--python_out=.grpc_gateway.png# 生成的python文件用到了google.api,搞了半天,我發現居然是包含在google-cloud-translate裡面的sudo pip3 install google-cloud-translate# 安裝go依賴的包go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gatewaygo
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • 打工人打工魂,打工的必會java調用python的幾種用法
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫圖丨pexelsjava調用python的幾種用法(看這篇就夠了)在java類中直接執行python語句準備工作:創建maven工程,結構如下:到官網https://www.jython.org
  • Python3調用新浪微博API抓取數據
    本文介紹基於Python3+通過調用新浪微博API方式採集用戶信息的案例。在高級信息中,點擊OAuth2.0,選擇編輯項均填入:https://api.weibo.com/oauth2/default.html3.編寫程序啟動Spyder,隨後將測試代碼粘貼進來。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:1、lambda簡介2、lambda與def不同之處3、lambda的使用方法1、lambda簡介先來看一段代碼示例:第一行是
  • obgame分享:電競LOL數據API接口-API調用
    分享使用 OBGAME電競數據 接口調用的示例代碼,接的是英雄聯盟的【選手基本信息】接口.接口請求地址:http://api.xxe.io/?
  • Baidu與Google地圖API初探
    前天周六,有個好友過來玩,他說想在他的網站中加入地圖導航模塊,但不知道選擇哪個第三方Map API 在網上查了下Baidu、Google、QQ和MapBar等4種Map API(都是採用JS開放API),也查看了它們的SDK開發文檔,
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。
  • Python語言基礎50課(3)​|一行代碼統計序列ATCG含量
    幾篇推文進行回溯:Python語言基礎50課Python語言基礎50課(2)我的Python - 100天筆記 |D1-D7我的Python - 100天筆記 |D8-D14今天的推文內容主要涵蓋:集合& 列表生成式(統計ATCG含量);函數與模塊(內置函數),下面就進入正題:集合我們常說的Python
  • python入門第四課:列表的排序、元素遍歷
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes本節介紹列表的操作,包括列表的排序、元素遍歷等操作。這裡再多囉嗦幾句,python就是靠縮進來解析代碼邏輯的,所以python中縮進非常重要。我們稍微改造一下上面的代碼,在全部水果列印後提示,所有水果列印完畢,請看代碼:只加了一條print語句,因為它沒有縮進,所以不算入for循環內,只執行一次。
  • 手把手教你學Numpy——常用API合集
    我們死記的話總是會搞混淆,實際上axis傳入的也是一個索引,表示第幾個索引的索引。我們的二維數組的shape是[行, 列],其中的第0位是行,第1位是列,可以認為axis是這個索引向量的一個索引。我們可以來驗證一下:可以看到axis=0和axis=1返回的向量的長度是不同的,因為以列為單位聚合只有4列,所以得到的是一個1 x 4的結果。
  • C/C++、Java、JavaScript、PHP、Python分別用來開發什麼?
    常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。Python是做伺服器開發與物聯網開發。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,在提高軟體運行效率的同時,也可以充分利用目前市面上各種第三方的DLL庫函數,以擴充Python軟體的功能及應用領域,減少重複編寫代碼、重複造輪子的工作量,這也充分體現了Python語言作為一種膠水語言所特有的優勢
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。
  • 通過Kettle調用Rest API獲取信息
    在此編輯界面中,需要限制只生成一條記錄提供後續的Rest Client調用使用。同時定義了令牌獲取的URL地址,HTTP調用方法,傳送的內容及其類型,可以參考Open Stack的API文檔。API調用的返回值寫入result中作為後續Json解析轉換的輸入信息。
  • SolidWorks三維建模入門到精通系列課程第1課,熟悉軟體界面
    1、SolidWorks入門第1課:SolidWorks軟體界面詳解。SolidWorks用戶界面包括設計樹、菜單欄、功能區、任務窗格和狀態欄等。調用「等軸側」和「正視於」工具
  • Python學習第117課——numpy中dot的運用舉例
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!
  • Java API + Python AI,實現跨平臺任務調度
    4,根據接收到的消息內容創建一個異步任務5,封裝一個Django Command,調用comsume_msg啟動消息監聽服務,代碼在目錄management/commands下的mq.py6,運行命令python manage.py mq,看到消息提示,啟動監聽服務成功