【Python與AI基礎】Python編程基礎:利用Requests庫處理HTTP

配套視頻課程:


【AI人工智能實戰】 Python編程基礎92集全套完整版(附完整版源碼資料)


一、HTTP協議回顧
1、請求類型

(1)GET:用於通過指定URL地址訪問

(2)POST:URL地址+請求數據,將請求數據提交給服務器

(3)PUT:與POST類似,主要用於Restful風格,用於更新數據

(4)DELETE:請求刪除某個資源

2、響應類型

(1)1XX:信息

(2)2XX:正常

(3)3XX:重定向

(4)4XX:客户端錯誤

(5)5XX:服務器錯誤

3、Session/Cookie

(1)HTTP協議是無狀態協議,利用Sessoin/Cookie。

(2)HTTP協議是單次通信,只有客户端發起請求,服務器端才會被動響應,反過來則不行。

Python HTTP庫 requests 的簡單使用詳情_#開發語言

4、其他補充

(1)HTTP協議簇包含:HTTP / HTTPS / WebSocket(實現了基於HTTP協議的全雙工通信) / HLS(音頻、視頻, m3u8) / SOAP(Web Service)

(2)HTTP協議屬於應用層的文本型協議

(3)HTTP協議可以上傳和下載任意類型的文件(傳輸二進制文件)

(4)HTTP協議在互聯網佔比90%以上,原因:協議相對簡單容易實現、有標準的Web服務器(Apache, Nginx, Tomcat, IIS等)

二、Requests庫處理HTTP
1、發送Get和Post請求
# 發送GET請求
resp = requests.get('http://localhost:8080/woniusales/')
resp.encoding = 'utf-8'     # 設置編碼格式
print(resp.text)            # 打印響應正文
# 發送POST請求
data = {'username':'admin', 'password':'admin123', 'verifycode':'0000'}
resp = requests.post(url='http://localhost:8080/woniusales/user/login', data=data)
print(resp.text)        
print(resp.headers)         # 打印響應頭
if resp.text == 'login-pass':       # 對響應進行判斷
    print("登錄成功")
else:
    print("登錄失敗")
# 登錄成功後獲取響應的Cookie,用於在後續請求中使用
cookie = resp.cookies

2、文件上傳下載

# 下載圖片
resp = requests.get('http://www.woniunote.com/img/banner-1.jpg')
with open('./banner.jpg', mode='wb') as file:
    file.write(resp.content)
# 文件上傳
file = {'batchfile': open('E:/Other/SaleList-20171020-Test.xls', 'rb')}
data = {'batchname': 'GB20211009'}
resp = requests.post(url='http://localhost:8080/woniusales/goods/upload', data=data, files=file, cookies=cookie)
print(resp.text)

3、利用session對象維持狀態

session = requests.session()
data = {'username':'admin', 'password':'admin123', 'verifycode':'0000'}
resp = session.post(url='http://localhost:8080/woniusales/user/login', data=data)
file = {'batchfile': open('E:/Other/SaleList-20171020-Test.xls', 'rb')}
data = {'batchname': 'GB20211007'}
resp = session.post(url='http://localhost:8080/woniusales/goods/upload', data=data, files=file)
print(resp.text)
print(type(resp.text))
# 利用Python直接處理JSON
import json
list = json.loads(resp.text)    # 將字符串反序列化成List+Dict的Python對象
print(list)
print(type(list))
print(list[1]['goodsname'])     # 輸出字典的某個值

4、處理HTTPS

resp = requests.get('https://www.woniuxy.cn', verify=False)     # 忽略證書
print(resp.text)