python3 介面獲取資料
第一次瞭解到“通過介面獲取資料”是在做一個專案時需要儲存大量資料,而通過介面是傳輸大量資料最好的選擇,因為它比匯出csv檔案,再儲存至資料庫的方法要更快捷、更方便。自己對介面學習了一段時間,對學到的東西做個記錄。
那麼介面是什麼?
介面分為兩種:程式內部介面 和 系統對外介面。1
程式內部介面 指的是,在程式內部的各方法、各模組之間進行資訊傳遞和互動的函式、變數等都可以稱為“介面”。
系統對外介面 指的是,當你從別的網站或者伺服器上獲取資料或資源時,不會直接得到資料庫,而是別人給你提供一個url,讓你通過這個url就可以直接使用他寫好的方法,達到資料共享的目的,獲得相關的資料和資訊等。比如app、網址等在進行資料處理的時候都是通過介面來進行呼叫的。
這裡主要記錄一下http介面。http介面遵循http協議,通過介面傳送http請求報文,請求報文以key-value格式傳送,然後會接收到http響應報文,一般響應報文都是json資料,通過解析json資料,便可以得到我們想要的資料。
獲取json資料一般有兩種方式:get 和 post 2
get方法 :將請求資料附在url之後(就是把資料放置在HTTP協議頭中),並顯示在位址列中。
以?分割URL和傳輸資料,多個引數用&連線。
例如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果資料是英文字母/數字,原樣傳送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進製表示的ASCII。
post方法 :把請求資料放置在http包的包體中。請求資料並不會出現在位址列中。
下面是get方法例項:
import requests
import json
url = 'https://api.github.com/events'
r = requests.get(url)
result = json.loads(r.text)
print(result)
python中有專門處理json資料的庫——json庫。json規定的字符集是UTF-8,因此字串必須使用雙引號 “ ”,鍵值也需要用雙引號 “ ”
簡要介紹一下常用json函式的含義。
編解碼json資料:
json.loads() 解碼json資料,將字串型別json資料轉化為字典dict型別
json.dumps() 編碼json資料,將dict型別轉化為 str 型別的 json 資料
讀寫json檔案:
json.load() 讀取json檔案的 json資料
json.dump() 把json資料寫出為 json檔案
下面是post方法例項:
url = 'http://httpbin.org/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print(r.text)
此時的輸出結果便是我們傳入的變數 s 。
這就是通過介面獲取資料,一開始我認為會有很多行程式碼來實現,其實沒有那麼複雜,只要獲取到資料就可以了,具體怎麼存到資料庫後面會繼續更新。hhh~~