天天看點

Python中get、post請求詳解(HTTP請求頭、狀态碼)

文章目錄

  • ​​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---服務端錯誤      

會話保持