在現代程式設計中,網路請求幾乎是每個專案不可或缺的一部分。無論是獲取資料、傳送資訊,還是與第三方 API 互動,都會涉及到網路請求。
今天,我們就來詳細介紹一下 Python 中的 requests 庫,它是一個功能強大、使用方便的 HTTP 請求庫。🚀
讓我們從基礎知識開始,一步步深入瞭解它的特性和實際應用場景。🌟
1. 安裝 requests 庫
首先,我們需要安裝 requests 庫。你可以在終端或命令提示符中輸入以下命令:
pip install requests
這個命令會自動下載並安裝 requests 庫到你的 Python 環境中。安裝完成後,就可以在程式碼中使用它了!🎉
2. requests 庫的特性
requests 庫有很多出色的特性,以下是一些主要特點:
- 簡潔易用:requests 庫的 API 設計非常直觀,易於上手。
- 支援多種 HTTP 方法:可以方便地傳送 GET、POST、PUT、DELETE 等請求。
- 自動處理 Cookies 和 Session:庫內建了對 Cookies 的處理,可以輕鬆實現會話保持。
- 支援檔案上傳:可以輕鬆實現檔案的上傳功能。
- 處理響應:響應內容可以方便地轉換為 JSON、文字或二進位制資料。
3. 基本功能介紹
3.1 傳送 GET 請求
GET 請求是最常用的請求型別之一。下面是一個簡單的 GET 請求示例,我們將請求 https://httpbin.org/get
:
import requests
# 傳送 GET 請求
response = requests.get('https://httpbin.org/get')
# 列印響應狀態碼
print('響應狀態碼:', response.status_code) # 狀態碼 200 表示請求成功
# 列印返回的 JSON 資料
print('返回的資料:', response.json()) # 將響應內容解析為 JSON 格式
3.2 傳送 POST 請求
當我們需要向伺服器傳送資料時,可以使用 POST 請求。以下是一個傳送 POST 請求的示例:
import requests
# 定義要傳送的資料
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
# 傳送 POST 請求
response = requests.post('https://httpbin.org/post', json=data)
# 列印響應狀態碼
print('響應狀態碼:', response.status_code)
# 列印返回的資料
print('返回的資料:', response.json())
3.3 設定請求頭
在某些情況下,我們需要設定 HTTP 請求頭來傳遞額外的資訊。例如,模擬瀏覽器請求時,可以設定 User-Agent
頭。以下是設定請求頭的示例:
import requests
# 定義請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Accept-Language': 'en-US,en;q=0.9',
}
# 傳送 GET 請求,並設定請求頭
response = requests.get('https://httpbin.org/get', headers=headers)
# 列印響應狀態碼和返回資料
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())
3.4 處理請求引數
有時我們需要在 GET 請求中新增查詢引數。下面是如何實現的:
import requests
# 定義查詢引數
params = {
'userId': 1
}
# 傳送 GET 請求,帶上查詢引數
response = requests.get('https://httpbin.org/get', params=params)
# 列印響應狀態碼和資料
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())
4. 高階功能介紹
4.1 處理 Cookies 和 Sessions
requests 庫支援會話管理,可以保持 Cookies。這樣,我們可以在多次請求之間共享資訊。
import requests
# 建立一個會話物件
session = requests.Session()
# 傳送 GET 請求
response = session.get('https://httpbin.org/get')
# 列印響應資料
print('響應資料:', response.json())
# 在會話中傳送另一個請求
response2 = session.get('https://httpbin.org/get')
print('多次請求響應資料:', response2.json())
4.2 檔案上傳
requests 庫還支援檔案上傳。下面是一個示例:
import requests
# 定義要上傳的檔案
files = {
'file': open('example.txt', 'rb') # 以二進位制模式開啟檔案
}
# 傳送 POST 請求上傳檔案
response = requests.post('https://httpbin.org/post', files=files)
# 列印響應狀態碼
print('上傳響應狀態碼:', response.status_code)
4.3 錯誤處理
在進行網路請求時,可能會遇到各種錯誤。我們可以使用異常處理來捕獲和處理這些錯誤:
import requests
try:
response = requests.get('https://httpbin.org/get')
response.raise_for_status() # 檢查請求是否成功
print('請求成功!資料:', response.json())
except requests.exceptions.HTTPError as err:
print('請求失敗!錯誤資訊:', err)
5. 爬蟲中的請求頭設定
在進行爬蟲時,設定適當的請求頭非常重要。以下是一些常見的請求頭:
- User-Agent:瀏覽器的標識,用於告訴伺服器請求來自哪個瀏覽器。
- Accept:告訴伺服器客戶端能夠處理的內容型別。
- Accept-Language:告知伺服器希望接收的語言。
- Referer:指明請求的來源地址,通常用於防止跨站請求偽造(CSRF)。
例如:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Accept': 'application/json',
'Accept-Language': 'en-US,en;q=0.9',
'Referer': 'https://example.com/',
}
response = requests.get('https://httpbin.org/get', headers=headers)
print('響應狀態碼:', response.status_code)
print('返回的資料:', response.json())
6. 實際應用場景
requests 庫的實際應用場景非常廣泛,以下是幾個常見例子:
- 資料抓取:使用 requests 庫可以輕鬆抓取網頁內容,進行資料分析或爬蟲開發。
- API 整合:在開發過程中,我們常常需要與第三方 API 互動,requests 庫提供了簡潔的介面來處理請求和響應。
- 自動化測試:在測試過程中,我們可以使用 requests 庫對 Web 應用的介面進行自動化測試。
7. 總結
今天,我們全面瞭解了 Python 的 requests 庫。從安裝、基本功能到高階特性,這個庫提供了許多便捷的功能,幫助我們輕鬆地處理 HTTP 請求。
在實際專案中,無論是資料抓取還是與 API 的互動,requests 庫都是一個不可或缺的工具。
希望這篇文章對你有所幫助!如果你有任何疑問或想法,歡迎在評論區分享哦!😊