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)

這項資訊有幫助嗎?
需要更多協助嗎?聯繋技術支援。