Python中Requests庫(kù)的實(shí)現(xiàn)示例
一、Requests 庫(kù)簡(jiǎn)介
Requests 是 Python 生態(tài)中 ?最廣泛使用的 HTTP 客戶端庫(kù),以「人類友好」為核心設(shè)計(jì)理念,簡(jiǎn)化了 HTTP 協(xié)議交互的復(fù)雜性。其核心價(jià)值包括:
- ?極簡(jiǎn) API:通過
requests.get()、post()等函數(shù)實(shí)現(xiàn)復(fù)雜網(wǎng)絡(luò)操作,代碼量比原生urllib減少 70% 以上。 - ?全協(xié)議支持:覆蓋 GET、POST、PUT、DELETE 等主流 HTTP 方法,適配 RESTful API、WebSocket 等場(chǎng)景。
- ?高效穩(wěn)定:內(nèi)置連接池復(fù)用、自動(dòng)重試、超時(shí)控制等機(jī)制,支持每秒 1000+ 次高并發(fā)請(qǐng)求。
- ?生態(tài)兼容:無縫對(duì)接
BeautifulSoup(網(wǎng)頁(yè)解析)、Pandas(數(shù)據(jù)處理)、Flask(服務(wù)測(cè)試)等工具鏈。
二、安裝與環(huán)境配置
# 基礎(chǔ)安裝(Python 3.7+ 環(huán)境) pip install requests # 國(guó)內(nèi)鏡像加速安裝 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
驗(yàn)證安裝:
import requests print(requests.__version__) # 輸出示例:2.31.0
三、核心功能與常用函數(shù)
?1. HTTP 基礎(chǔ)請(qǐng)求方法
| 函數(shù) | 功能描述 | 示例代碼 |
|---|---|---|
| ?**requests.get()** | 發(fā)送 GET 請(qǐng)求(數(shù)據(jù)獲取場(chǎng)景) | response = requests.get("https://api.github.com") |
| ?**requests.post()** | 發(fā)送 POST 請(qǐng)求(表單提交/API 調(diào)用) | requests.post("https://httpbin.org/post", data={"key": "value"}) |
| ?**requests.put()** | 發(fā)送 PUT 請(qǐng)求(資源更新) | requests.put("https://api.example.com/data/1", json={"name": "Kimi"}) |
| ?**requests.delete()** | 發(fā)送 DELETE 請(qǐng)求(資源刪除) | requests.delete("https://api.example.com/data/1") |
| ?**requests.Session()** | 創(chuàng)建會(huì)話對(duì)象(保持 Cookies 和 TCP 連接復(fù)用,提升性能) | with requests.Session() as s: s.get("https://example.com") |
2. 請(qǐng)求參數(shù)與定制化
?查詢參數(shù)傳遞:
params = {"q": "Python", "page": 2} response = requests.get("https://search.example.com", params=params)生成 URL:
https://search.example.com?q=Python&page=2?請(qǐng)求頭定制:
headers = {"User-Agent": "Mozilla/5.0", "Authorization": "Bearer YOUR_TOKEN"} requests.get("https://api.example.com", headers=headers)模擬瀏覽器行為或身份驗(yàn)證
?JSON 數(shù)據(jù)提交:
requests.post("https://api.example.com/login", json={"username": "admin", "password": "secret"})自動(dòng)設(shè)置
Content-Type: application/json
?3. 響應(yīng)處理與解析
| 屬性/方法 | 功能描述 | 示例代碼 |
|---|---|---|
| ?**response.status_code** | 獲取 HTTP 狀態(tài)碼(如 200 表示成功,404 資源未找到) | if response.status_code == 200: print("成功") |
| ?**response.text** | 獲取響應(yīng)內(nèi)容(自動(dòng)解碼文本,如 HTML/XML) | print(response.text[:500]) # 截取前500字符 |
| ?**response.json()** | 解析 JSON 響應(yīng)為 Python 字典或列表 | data = response.json(); print(data["temperature"]) |
| ?**response.headers** | 獲取響應(yīng)頭信息(如服務(wù)器類型、緩存策略) | print(response.headers["Content-Type"]) |
| ?**response.raise_for_status()** | 自動(dòng)拋出異常(狀態(tài)碼非 200 時(shí)觸發(fā)) | try: response.raise_for_status() except requests.HTTPError: ... |
4. 高級(jí)功能
?文件上傳與下載:
# 上傳文件 files = {"file": open("report.pdf", "rb")} requests.post("https://api.example.com/upload", files=files)[4,6](@ref) # 流式下載大文件 with requests.get("https://example.com/large_video.mp4", stream=True) as r: with open("video.mp4", "wb") as f: for chunk in r.iter_content(chunk_size=8192): f.write(chunk)?超時(shí)與重試策略:
from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry retry = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503]) adapter = HTTPAdapter(max_retries=retry) session = requests.Session() session.mount("https://", adapter) session.get("https://unstable-api.com", timeout=5) # 超時(shí)5秒,重試3次[4,6](@ref)
四、應(yīng)用場(chǎng)景與實(shí)戰(zhàn)案例
?數(shù)據(jù)采集與爬蟲:
- 抓取新聞標(biāo)題:
requests.get()+BeautifulSoup解析 HTML - 動(dòng)態(tài)內(nèi)容加載:配合
Selenium處理 JavaScript 渲染頁(yè)面
- 抓取新聞標(biāo)題:
?API 集成開發(fā):
- 調(diào)用天氣接口:
requests.get("https://weather-api.com?city=北京") - 對(duì)接 ChatGPT:發(fā)送 JSON 請(qǐng)求并處理流式響應(yīng)
- 調(diào)用天氣接口:
?自動(dòng)化測(cè)試:
- 驗(yàn)證 REST API 功能:斷言響應(yīng)狀態(tài)碼和數(shù)據(jù)格式
- 壓力測(cè)試:多線程并發(fā)發(fā)送請(qǐng)求(需結(jié)合
concurrent.futures)
?企業(yè)級(jí)應(yīng)用:
- 財(cái)務(wù)報(bào)表批量下載:會(huì)話保持 + 定時(shí)任務(wù)
- 跨系統(tǒng)數(shù)據(jù)同步:OAuth 認(rèn)證 + POST/PUT 方法
?五、注意事項(xiàng)與優(yōu)化技巧
?安全規(guī)范:
- 敏感數(shù)據(jù)(如 API Key)避免硬編碼,使用環(huán)境變量管理
- 啟用 HTTPS 并驗(yàn)證證書:
verify=True(默認(rèn))
?性能調(diào)優(yōu):
- 復(fù)用
Session對(duì)象減少 TCP 握手開銷 - 設(shè)置合理超時(shí):
timeout=10防止阻塞主線程
- 復(fù)用
?異常處理:
try: response = requests.get(url, timeout=5) response.raise_for_status() except requests.Timeout: print("請(qǐng)求超時(shí)") except requests.ConnectionError: print("網(wǎng)絡(luò)連接失敗")
到此這篇關(guān)于Python中Requests庫(kù)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python Requests庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python中requests模塊的使用方法
- python中requests庫(kù)session對(duì)象的妙用詳解
- python采用requests庫(kù)模擬登錄和抓取數(shù)據(jù)的簡(jiǎn)單示例
- Python使用requests發(fā)送POST請(qǐng)求實(shí)例代碼
- python中requests使用代理proxies方法介紹
- python?如何使用requests下載文件
- Python爬蟲庫(kù)requests獲取響應(yīng)內(nèi)容、響應(yīng)狀態(tài)碼、響應(yīng)頭
- Python3使用requests包抓取并保存網(wǎng)頁(yè)源碼的方法
- 詳解Python requests 超時(shí)和重試的方法
- Python requests timeout的設(shè)置
- 解決Python requests 報(bào)錯(cuò)方法集錦
相關(guān)文章
Python計(jì)算機(jī)視覺里的IOU計(jì)算實(shí)例
今天小編就為大家分享一篇Python計(jì)算機(jī)視覺里的IOU計(jì)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
淺談Python3實(shí)現(xiàn)兩個(gè)矩形的交并比(IoU)
今天小編就為大家分享一篇淺談Python3實(shí)現(xiàn)兩個(gè)矩形的交并比(IoU),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python中pytest收集用例規(guī)則與運(yùn)行指定用例詳解
這篇文章主要介紹了python中pytest收集用例規(guī)則與運(yùn)行指定用例詳解,天會(huì)講解一下pytest是如何收集我們寫好的用例?我們又有哪些方式來運(yùn)行單個(gè)用例或者批量運(yùn)行用例呢,需要的朋友可以參考下2019-06-06
Python-apply(lambda x: )的使用及說明
這篇文章主要介紹了Python-apply(lambda x: )的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
如何運(yùn)用sklearn做邏輯回歸預(yù)測(cè)
這篇文章主要介紹了如何運(yùn)用sklearn做邏輯回歸預(yù)測(cè)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題
這篇文章主要介紹了python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽基礎(chǔ)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽基礎(chǔ)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
Pytorch GPU內(nèi)存占用很高,但是利用率很低如何解決
這篇文章主要介紹了Pytorch GPU內(nèi)存占用很高,但是利用率很低的原因及解決方法,具有很好的參考價(jià)值,希望對(duì)大家 有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

