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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM