Requests là thư viện bên thứ ba của Python để thực hiện các yêu cầu HTTP, được đánh giá cao trong lĩnh vực thu thập dữ liệu web. Thư viện này nổi bật với cú pháp đơn giản và hiệu quả, cho phép truy xuất tài nguyên web chỉ bằng một dòng lệnh.
Cài đặt Thư viện Requests
Thực hiện câu lệnh sau trong terminal:
pip install requests
Kiểm tra hoạt động:
>>> import requests
>>> response = requests.get("https://example.com")
>>> response.status_code
200
>>> response.encoding = 'utf-8'
>>> print(response.text[:100])
<!doctype html>
<html>
<head>
<title>Example Domain</title>
Các Phương Thức Chính trong Requests
| Phương thức | Mô tả |
| requests.request() | Phương thức nền tảng cho các hoạt động HTTP |
| requests.get() | Truy xuất nội dung HTML (GET) |
| requests.head() | Lấy thông tin header (HEAD) |
| requests.post() | Gửi dữ liệu đến máy chủ (POST) |
| requests.put() | Cập nhật tài nguyên (PUT) |
| requests.patch() | Cập nhật một phần tài nguyên (PATCH) |
| requests.delete() | Xóa tài nguyên (DELETE) |
Ví dụ Sử Dụng:
Tham số params:
>>> query_params = {'q': 'python', 'page': 1}
>>> result = requests.get('https://api.example.com/search', params=query_params)
>>> result.url
'https://api.example.com/search?q=python&page=1'
Gửi dữ liệu JSON:
>>> payload = {'username': 'admin', 'access_level': 5}
>>> response = requests.post('https://api.example.com/login', json=payload)
Thiết lập timeout:
>>> try:
>>> requests.get('https://example.com', timeout=5)
>>> except requests.exceptions.Timeout:
>>> print("Yêu cầu hết hạn")
Xử Lý Đối Tượng Response
Các thuộc tính quan trọng:
| Thuộc tính | Công dụng |
| status_code | Mã trạng thái HTTP |
| text | Nội dung phản hồi dạng văn bản |
| encoding | Bảng mã xác định từ header |
| apparent_encoding | Bảng mã dự đoán từ nội dung |
| content | Dữ liệu nhị phân |
Khung Mã Thu Thập Dữ Liệu Cơ Bản
def fetch_web_content(url):
try:
resp = requests.get(url, timeout=15)
resp.raise_for_status()
resp.encoding = resp.apparent_encoding
return resp.text
except requests.exceptions.RequestException as err:
return f"Lỗi: {str(err)}"
Tương Quan Giữa HTTP Methods và Requests
| HTTP Method | Requests Method | Chức năng |
| GET | .get() | Truy xuất tài nguyên |
| HEAD | .head() | Lấy thông tin header |
| POST | .post() | Tạo mới tài nguyên |
| PUT | .put() | Thay thế toàn bộ tài nguyên |
| PATCH | .patch() | Cập nhật một phần |
| DELETE | .delete() | Xóa tài nguyên |
So Sánh PUT và PATCH:
- PUT: Thay thế toàn bộ tài nguyên, yêu cầu gửi lên đầy đủ thuộc tính
- PATCH: Chỉ cập nhật các trường được chỉ định, tiết kiệm băng thông
Ví dụ: Khi cập nhật 1 trường trong đối tượng có 20 thuộc tính, PATCH chỉ gửi trường thay đổi.