Python requests 模塊代碼演示
requests 是 Python 中一個簡單易用的 HTTP 庫,用于發送各種 HTTP 請求。下面是一些常見的使用示例:
1. 基本 GET 請求
import requests# 發送 GET 請求
response = requests.get('https://api.github.com')# 檢查請求是否成功 (狀態碼 200)
if response.status_code == 200:print('請求成功!')print('響應內容:', response.text[:200]) # 打印前200個字符
else:print('請求失敗,狀態碼:', response.status_code)
2. 帶參數的 GET 請求
import requests# 定義查詢參數
params = {'q': 'python','sort': 'stars','order': 'desc'
}# 發送帶參數的 GET 請求
response = requests.get('https://api.github.com/search/repositories', params=params)# 解析 JSON 響應
if response.status_code == 200:data = response.json()print(f"找到 {data['total_count']} 個倉庫")print("前幾個倉庫:")for repo in data['items'][:3]:print(f"- {repo['name']} ({repo['stargazers_count']} 星)")
3. POST 請求
import requests
import json# 要發送的數據
data = {'name': 'John Doe','email': 'john@example.com'
}# 發送 POST 請求
response = requests.post('https://httpbin.org/post',data=json.dumps(data), # 將字典轉換為JSON字符串headers={'Content-Type': 'application/json'}
)# 檢查響應
if response.status_code == 200:print('POST 請求成功!')print('響應數據:', response.json())
4. 處理響應
import requestsresponse = requests.get('https://api.github.com/events')# 不同的響應屬性
print("狀態碼:", response.status_code)
print("響應頭:", response.headers['Content-Type'])
print("編碼:", response.encoding)
print("文本內容:", response.text[:100]) # 文本格式
print("JSON內容:", response.json()[0]) # 如果響應是JSON格式
5. 錯誤處理
import requests
from requests.exceptions import RequestExceptiontry:response = requests.get('https://api.github.com/nonexistent', timeout=5)response.raise_for_status() # 如果請求失敗會拋出異常
except RequestException as e:print(f"請求發生錯誤: {e}")
else:print("請求成功!")
6. 會話對象 (保持會話)
import requests# 創建會話對象
session = requests.Session()# 設置會話級別的默認值
session.headers.update({'User-Agent': 'MyApp/1.0'})# 第一次請求 - 會設置cookie
response1 = session.get('https://httpbin.org/cookies/set/sessionid/12345')# 第二次請求 - 會自動攜帶之前的cookie
response2 = session.get('https://httpbin.org/cookies')print(response2.text)
7. 文件上傳
import requestsurl = 'https://httpbin.org/post'
files = {'file': open('example.txt', 'rb')}response = requests.post(url, files=files)
print(response.text)
8. 基本認證
import requests
from requests.auth import HTTPBasicAuthresponse = requests.get('https://api.github.com/user',auth=HTTPBasicAuth('username', 'password')
)# 或者簡寫為:
# response = requests.get('https://api.github.com/user', auth=('username', 'password'))print(response.status_code)
9. 超時設置
import requeststry:# 設置連接和讀取超時為5秒response = requests.get('https://api.github.com', timeout=5)print("請求在超時前完成")
except requests.exceptions.Timeout:print("請求超時")
10. 代理設置
import requestsproxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
}response = requests.get('https://api.github.com', proxies=proxies)
print(response.status_code)
這些示例涵蓋了 requests 模塊的最常用功能。requests 的 API 設計非常直觀,使得發送 HTTP 請求變得非常簡單。