2.5 Python 庫
本節要點
- 瞭解pip的概念、用法
- 掌握Python中模塊(Module)的概念,以及如何引入模塊/標準庫/第三方庫
- 重點掌握Python中JSON庫與Requests庫
課前準備
安裝Requests庫
在命令行下透過pip安裝:
pip install requests
出現Successfully insatlled requests-xxxx即表示安裝成功!
課程內容
pip 與 Python庫
1. pip是什麼
pip是一個以Python電腦程式語言寫成的軟體包管理系統,提供了對 Python 包的查找、下載、安裝、卸載的功能。
2. 模塊的概念
前面我們提到了在Python中定義變數和函數,如果你從 Python 解釋器退出再進入,那麼你定義的所有的方法和變數就都消失了。
為此 Python 提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。
定義模塊:
#!/usr/bin/python3
# Filename: support.py
def print_func( par ):
print ("Hello : ", par)
return
調用模塊:
#!/usr/bin/python3
# Filename: test.py
# 导入模块
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
3. 包的概念
包是一種管理 Python 模塊命名空間的形式,採用"點模塊名稱"; 比如一個模塊的名稱是 A.B, 那麼他表示一個包 A中的子模塊 B 。
4. Python豐富的庫
除了內建的模塊外,Python還有大量的第三方模塊。
基本上,所有的第三方模塊都會在PyPI - the Python Package Index上註冊,只要找到對應的模塊名字,即可用pip安裝。
庫名 | 介紹 |
Math | Math模塊提供了許多對浮點數的數學運算函數; |
NumPy | NumPy引入了支援大型多維陣列和矩陣的函數,同時還引入了高級數學函數來處理這些陣列和矩陣; |
Matplotlib | Matplotlib是Python中最流行的資料可視化庫。允許生成和建立各種各樣的圖; |
Pandas | Pandas主要用於資料操作和資料分析; |
Scrapy | Scrapy是另一個可有效用於網頁抓取的Python庫。它是一個開源的協作框架,用於從網站中提取所需資料。使用起來快捷簡單。 |
5. 如何匯入庫
使用import就可以匯入一個庫,然後使用庫中的函數。
import math
import numpy as np
from numpy import *
Json庫
JavaScript對象表示法是一種流行的方式將資料格式化,成為人可讀的字串。JSON是JavaScript變成編寫資料結構的原生方式,不需要了解JavaScript,也能處理JSON格式的資料
下面是JOSN格式資料的一個例子:
{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null}
1. 匯入json庫
匯入json模塊後,就可以調用相關函數,JSON字串總是用雙引號
import json
Python 原始類型向 JSON 類型的轉化對照表:
Python | JSON |
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
2. JSON格式轉換
- json.loads
要將包含JSON資料的字串轉換為Python的值,就將它傳遞給json.loads()函數
import json
a='{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null}'
b=json.loads(a)
print(b)
- json.dumps()
將一個Python值轉換成JSON格式的資料字串,該值只能是以下基本Python資料類型之一:字典、列表、整型、浮點型、字串、布爾型或None
import json
a={'name': 'Zophie', 'isCat': True, 'miceCaught': 0, 'napsTaken': 37.5, 'felineIQ': None}
b=json.dumps(a)
print(b)
3. JSON與字典的差別
從形式上看,都是“Key:Value”的形式。但是從本質上講,字典是一種資料結構,而json是一種格式;字典有很多內置函數,有多種調用方法,而json是資料打包的一種格式,並不像字典具備操作性,並且是格式就會有一些形式上的限制,比如json的格式要求必須且只能使用雙引號作為key或者值的邊界符號,不能使用單引號,而且“key”必須使用邊界符(雙引號),但字典就無所謂了。
requests庫
Requests文件地址:點我查看
1. 匯入Requests庫
import requests
2. Requests的具體構成
requests.request(method, url, ``*``*``kwargs)
3. 使用Requests
要透過GET造訪一個頁面,只需要幾行程式碼:
>>> import requests
>>> r = requests.get('https://www.baidu.com/') # 百度
>>> r.status_code
200
>>> r.text
r.text
4. 注意請求格式
API最常見的請求格式有 json/application 及 x-www-form-urlencoded,我們已經在第一節課講了其區別,在實際調用API過程中,我們要根據API的請求格式,對參數進行處理!
- API請求格式為 application/json
import requests
import urllib.parse
import json
url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"
payload = {"image":"http://www.xxxx.com/xxxx.png"}
headers = {
'Authorization': 'APPCODE xxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = json.dumps(payload))
json.loads(response.text)
- API請求格式為 x-www-form-urlencoded
urlencode 即url編碼,把資料轉換為類似url傳參的格式
urlencode前
{"image":"http://www.xxxx.com/xxxx.png"}
urlencode後
'image=http%3A%2F%2Fwww.xxxx.com%2Fxxxx.png'
import requests
import urllib.parse
import json
url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"
payload = {"image":"http://www.xxxx.com/xxxx.png"}
headers = {
'Authorization': 'APPCODE xxxxxxxxxxxxxxx',
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data = urllib.parse.urlencode(payload))
json.loads(response.text)