文章目錄
- GET
- 1)導入子產品
- 2)發送請求
- 3)響應請求
- POST
- HTTP請求頭
- HTTP響應狀态碼
- 會話保持
我們知道通常浏覽器支援get與post兩種常見的請求方式,那麼在python當中如何具體實作呢?
GET
首先是get,我們知道get指令比較簡單,通常便是在浏覽器視窗位址欄中使用?xx=xxxxx
那麼在python當中如何實作這個過程呢?
首先我們需要了解requests子產品
1)導入子產品
import
2)發送請求
import requests
r = requests.get('https://www.baidu.com') # 最基本的不帶參數的get請求
re = requests.get(url='https://www.baidu.com/s', params={'wd':'python'}) # 帶參數的get請求
這便實作了一個?get請求
3)響應請求
r.encoding #擷取目前的編碼
r.encoding = 'utf-8' #設定編碼
r.text #以encoding解析傳回内容。字元串方式的響應體,會自動根據響應頭部的字元編碼進行解碼。
r.content #以位元組形式(二進制)傳回。位元組方式的響應體,會自動為你解碼 gzip 和 deflate 壓縮。
r.headers #以字典對象存儲伺服器響應頭,但是這個字典比較特殊,字典鍵不區分大小寫,若鍵不存在則傳回None
r.request.headers # 前提是你要在參數裡面寫入了headers
r.status_code #響應狀态碼
r.raw #傳回原始響應體,也就是 urllib 的 response 對象,使用 r.raw.read()
r.ok # 檢視r.ok的布爾值便可以知道是否登陸成功
#*特殊方法*#
r.json() #Requests中内置的JSON解碼器,以json形式傳回,前提傳回的内容確定是json格式的,不然解析出錯會抛異常
r.raise_for_status() #失敗請求(非200響應)抛出異常
POST
與get類似這裡多說一點就是可以發送json請求
import requests
import json
r = requests.post('https://www.baidu.com', data=json.dumps({'name': 'value'}))
print(r.json())
這裡再比較下請求頭與響應頭
import requests
headers = {
'Referer': 'https://www.csdn.net/',
}
re = requests.get('http://www.baidu.com')
print(re.headers)
print(re.request.headers)
HTTP請求頭
'Referer': 目前網頁從哪裡跳轉來
'User-Agent': 浏覽器代理資訊,
'Accept-encoding': 浏覽器接收的編碼,
'Location':
HTTP響應狀态碼
1XX---資訊提示
2XX---成功
3XX---重定向
4XX---用戶端錯誤
5XX---服務端錯誤