當我們想從api接收資料時,我們需要發出請求。請求遍及整個網路。例如,當您訪問此部落格文章時,您的web瀏覽器向伺服器發出了請求,該伺服器以該web頁的內容作為響應。
先安裝好python中的requests庫 (teriminal中直接輸入)
pip install requests
requests庫中有許多不同型別的請求。最常用的乙個get請求用於檢索資料。由於我們將僅檢索資料,因此我們的重點將放在發出「get」請求上。
發出「get」請求,我們使用requests.get( )函式,定義如下:
help
(requests.get)
help on function get in module requests.api:
get(url, params=
none
,**kwargs)
sends a get request.
:param url: url for the new :
class
:`request` object
.:param params:
(optional) dictionary,
list of tuples or
bytes to send
in the query string for the :
class
:`request`.
:param \*\*kwargs: optional arguments that ``request`` takes.
:return::
class
:`response ` object
:rtype: requests.response
其中首先注意 url
urlur
l 這個輸入引數,就是最重要的api介面。
現在我們接入乙個api
response = requests.get(
"")print
(response.status_code)
# 404
可能你們會很熟悉「404」這個狀態**,這是伺服器返回的乙個狀態**,說明要獲取的資源並不存在與這個伺服器上。
還有很多其他的狀態**:
·200:一切正常,結果已返回(如果有)。
·301:伺服器將您重定向到其他端點。當公司切換網域名稱或更改端點名稱時,可能會發生這種情況。
·400:伺服器認為您提出了錯誤的請求。當您沒有正確傳送資料時,可能會發生這種情況。
·401:伺服器認為您未通過身份驗證。許多api都需要登入證書,因此當您沒有傳送正確的憑據來訪問api時就會發生這種情況。
·403:您嘗試訪問的資源被禁止:您沒有檢視該資源的正確許可權。
·404:在伺服器上找不到您嘗試訪問的資源。
·503:伺服器尚未準備好處理請求。
通常,特定伺服器上會提供多個api。這些api中的每乙個通常稱為端點。我們將使用的第乙個端點是該端點返回有關當前太空中太空飛行員的資料。
response = requests.get(
"")print
(response.status_code)
# 200
返回值是「200」,說明一切正常,結果已返回。
但是要注意的是,返回的格式是json形式,我們來輸出一下看看:
print
(response.json())
#, , , , , ], 'number': 6}
輸出的格式有利於計算器去閱讀,但是我們並不容易去觀察到這組資料的特點,這樣,我們就需要匯入json模組去處理這個json資料。
import json
defjprint
(obj)
:# create a formatted string of the python json object
text = json.dumps(obj, sort_keys=
true
, indent=4)
print
(text)
jprint(response.json(
))
輸出如下:
,,
,,,]
}
這樣看起來,就是python中dictionary的形式,很容易去看到資料具有怎樣的屬性,也便於進一步的資料處理。
在之前的get函式中,除了輸入url,還有乙個屬性是params。不是所有請求的狀況下都需要params,但請求某些特定的資料是,需要給伺服器乙個參量,才可以返回你想要的資料。
例如這個端點。該端點下次告訴我們國際空間站將經過地球上的給定位置。這時候我們就要輸入地理位置,已獲取空間站的位置。
parameters =
以字典的形式給出乙個經緯度資訊,再次使用get請求資料。
response = requests.get(
"", params=parameters)
jprint(response.json(
))
返回的資料:
,"response":[
,,,,
]}
但是上述的時間——risetime 是一串數字,貌似很難去理解,這種時間格式叫做timestamp或者是epoch。我們可以使用datetime庫來轉化為我們熟悉的時間格式。
risetimes =
for d in pass_times:
time = d[
'risetime'
]print
(risetimes)
然後匯入datetime庫,進行轉換:
from datetime import datetime
times =
for rt in risetimes:
time = datetime.fromtimestamp(rt)
print
(time)
結果一目了然:
2019-09
-0921:
27:592019-09
-0923:
01:582019-09
-1000:
39:042019-09
-1002:
17:112019-09
-1003:
54:34
−−−
−−−−
−−−−
−−−−
−----------------
−−−−−−
−−−−
−−−−
−−該文章首發於 zyairelu.cn
− −−
−−−−
−−−−
−−−−
−----------------
−−−−−−
−−−−
−−−−
−−
python入門教程少兒 Python 入門教程
python 入門教程 python是一種解釋型 物件導向 動態資料型別的高階程式語言。python由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年。像perl語言一樣,python 源 同樣遵循 gpl gnu general public license 協...
Python基礎入門教程
python基礎教程 python 簡介 python環境搭建 python 基礎語法 python 變數型別 python 運算子 python 條件語句 python 迴圈語句 python while迴圈語句 python for 迴圈語句 python 迴圈巢狀 python break 語...
Python入門教程 元組
一 語法 elem1,elem2.元組與列表類似,不同之處在於 1 元組的元素不能修改。2 元組使用小括號,而列表使用方括號。可以建立乙個空的元組 tup 注意 元組中只包含乙個元素時,需要在元素後面新增逗號。tup 50,print hi 4 hihihihi print hi 4 hi hi h...