Sử Dụng Thư Viện Requests trong Python để Thu Thập Dữ Liệu Web

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ứcMô 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ínhCông dụng
status_codeMã trạng thái HTTP
textNội dung phản hồi dạng văn bản
encodingBảng mã xác định từ header
apparent_encodingBảng mã dự đoán từ nội dung
contentDữ 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 MethodRequests MethodChứ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.

Thẻ: python requests web-scraping HTTP-Protocol API-Truy-Vấn

Đăng vào ngày 30 tháng 6 lúc 03:12