1. 程式人生 > 實用技巧 >requests.session()傳送請求 和使用requests直接傳送請求的區別

requests.session()傳送請求 和使用requests直接傳送請求的區別

requests.session()傳送請求 和使用requests直接傳送請求的區別

一、Session

在requests裡,session物件是一個非常常用的物件,這個物件代表一次使用者會話:從客戶端瀏覽器連線伺服器開始,到客戶端瀏覽器與伺服器斷開。

會話能讓我們在跨請求的時候保持某些引數,比如在同一個session例項發出的所有請求之間保持cookie資訊。

1、建立session物件
session = requests.session()

得到session物件之後,就可以呼叫該物件中方法來發送請求了。

response1 = session.get(url,params,headers)
response2 
= session.post(url,data,json,headers)

通過session來發送get、post、delete、put等請求並獲取響應。

二、requests

requests是Python的一個第三方的庫,主要用於傳送網路請求,比如get、post等請求已達到獲取網路響應的目的

語法如下:

import requests
response1 = requests.get(url,params,headers,cookies) # 傳送get網路請求
response2 = requests.post(url,data,json,headers,cookies) #
傳送post網路請求 # put、delete等請求方法類似

三、session物件和requests兩種方法傳送的請求的區別:

1、場景
  1. 登陸某商城
  2. 查詢我的訂單資料
2、業務程式碼分析
  1. 首先這裡涉及到兩個介面,一個“登陸介面”,另外一個是“查詢訂單”的介面。
  2. 常規操作是我們 通過呼叫登陸介面 來獲取響應的 cookie資訊。
  3. 然後拿這個 cookie資訊作為下一次請求的引數(cookie帶有當前登陸人的資訊)來請求 查詢訂單的介面

常規程式碼如下:

# 以下程式碼純為了舉例,沒有效果的虛擬碼
import requests
#
登陸介面 response1 = requests.get(url_login,params,headers) # 獲取cookies資訊 cookies = response.cookies # 得到的cookies 是一個字典型別 cookie = cookies.get("cookies的key") # 請求 查詢介面 response2 = requests.get(search_url,params,headers,cookies=cookie) # 檢視查詢響應的結果 response2.json()

使用session程式碼如下:

# 以下程式碼純為了舉例,沒有效果的虛擬碼
import requests
# 獲取 session物件
session = requests.session()
# 登陸介面
response1 = session.get(url_login,params,headers)
# 請求 查詢介面
response2 = session.get(search_url,params,headers)
# 檢視查詢響應的結果
response2.json()

補充知識點:
可以從請求方法的返回值response中可以獲取的內容:

response.status_code   狀態碼
response.url     請求url
response.encoding     檢視響應頭部字元編碼
response.cookies     cookie資訊
response.headers     頭資訊
response.text     文字形式的響應內容
response.content     二進位制位元組形式的響應內容
response.json()     JSON形式的響應內容(其實就是dict字典型別)

轉載:https://blog.csdn.net/qq_25986923/article/details/105332640?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param