网络库urillib3
urillib3
- 發送HTTP GET請求
- 上傳文件
發送HTTP GET請求
使用urlib3中的API向服務端發送HITP請求,
- 首先需要引用untilib3模塊。
- 然后創建PoolManager類的實例,該類用于管理連接池。
- 最后就可以通過request方法發送GET請求了,
- equest方法的返回值就是服務端的響應結果,通過database lots可以獲得服務端的響應數據。
request方法的返回值就是服務端的響應結果,通過data屬性可以直接獲得服務端的響應數據。
當向服務端發送HITPGET請求時,如果請求字段值包含中文、空格等字符,需要對其進行編碼。
使用request方法發送HTTPGET請求時,可以使用unlencodee函數對GET字段進行編碼,也可以直接使用fields關鍵字參數指定字典形式的GET請求字段。
使用這種方式,request方法會自動對fields關鍵字參數指定的GET請求字段進行編碼。
# http 是PoolManager 類的實例變量 http.request('GET',url,fields={'wd':'爬蟲代碼'})代碼:
from urllib3 import *# 調用 disable_warnings()函數可以阻止顯示警告信息 disable_warnings() #創建PoolManager 實例 http = PoolManager()url = 'https://www.baidu.com/s' response = http.request('GET',url,fields={'wd':'爬蟲代碼'}) #獲取百度服務器的返回值(字節形式),并使用UTF-8格式對其進行解碼 data = response.data.decode('UTF-8') #輸出百度服務器返回的內容 print(data)上傳文件
客戶端瀏覽器向服務端發送HTTP請求時有一類特殊的請求,就是上傳文件,為什么特殊呢?
因為發送其他值時,是以字節為單位的,而上傳文件時,可能是以KB或MB為單位的,所以發送的文件尺寸通常比較大,因此上傳的文件內容會用
multipart/form?data格式進行編碼,然后再上傳。
urlib3對文件上傳有很好的支持。只需設置普通的HTTP請求頭一樣在request方法中使用fields關鍵字參數指定一個描述上傳文件的HTTP請求頭字段,然后再通過元組指定相關屬性即可,例如,上傳文件名,文件類型等。
先用Flask實現一個可以接收上傳文件的服務端程序,該程序從客戶端獲取上傳的文件的內容,并將上傳文件名保存到當前的uploads之目錄中。
代碼:
客戶端程序:
from urllib3 import *# 調用 disable_warnins 函數可以阻止顯示警告信息disable_warnings() #創建PoolManager 實例 http = PoolManager() #定義上傳文件的服務器URL url = 'http://127.0.0.1:5000/' while True:#輸入上傳文件的名字filename = input('請輸入要上傳的文件名(必須在當前目錄下)')if not filename:break#用二進制方式打開,然后讀取所有內容with open(filename,'rb') as fp:fileData = fp.read()#上傳文件response = http.request('POST',url,fields={'file':(filename,fileData)})print(response.data.decode('utf-8'))不了解 Flask的可以看下這幾篇博客:
- FastAPI ------框架基礎
- python前端學習-----Flask進階
- Flask實戰----做了一個簡易版CSDN
總結
以上是生活随笔為你收集整理的网络库urillib3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络爬虫(urllib超详细使用指南)
- 下一篇: Python requests 笔记(一