1. Trang chủ
  2. Blog
  3. Python Requests: Cách Gửi Yêu Cầu HTTP Trong Python Cho Người Mới
Python

Python Requests: Cách Gửi Yêu Cầu HTTP Trong Python Cho Người Mới

U

Uyên Hoàng Thị Tố

Đăng ngày 11/11/2026

Python requests là thư viện giúp bạn gửi yêu cầu HTTP như GET, POST tới website hoặc API chỉ với vài dòng code. Bài viết hướng dẫn cách cài đặt và gửi requests get in python. Bạn cũng học cách đọc response status code, xử lý JSON, đặt timeout và bắt lỗi qua ví dụ dễ hiểu cho người mới.

Python requests là gì?

Mỗi lần bạn mở một trang web, trình duyệt gửi một yêu cầu HTTP tới máy chủ và nhận về phản hồi. Python requests cho phép code Python làm đúng việc đó, không cần mở trình duyệt.

Requests không có sẵn khi cài Python. Đây là thư viện bên thứ ba, nằm trên kho PyPI và được cộng đồng dùng rất rộng rãi nhờ cú pháp ngắn gọn.

Thư viện requests dùng để làm gì?

Bạn sẽ gặp requests trong nhiều việc thực tế:

  • Gọi API: lấy dữ liệu thời tiết, tỷ giá, thông tin sản phẩm dạng JSON.

  • Tải trang web: lấy nội dung HTML để phân tích hoặc lưu lại.

  • Gửi dữ liệu: đăng nhập, gửi biểu mẫu, đẩy dữ liệu lên máy chủ.

  • Tự động hóa: kiểm tra website còn hoạt động, tải file định kỳ.

So với module urllib có sẵn, requests viết ngắn hơn và dễ đọc hơn. Vì vậy người mới thường chọn requests khi làm quen với HTTP.

Cách cài đặt python requests

Bạn cài requests bằng pip, trình quản lý gói đi kèm Python.

Bước 1: Mở Terminal (macOS, Linux) hoặc Command Prompt (Windows).

Bước 2: Gõ lệnh cài đặt:

pip install requests

Bước 3: Kiểm tra cài đặt thành công:

import requests
print(requests.__version__)

Nếu màn hình in ra số phiên bản, bạn đã sẵn sàng. Nếu gặp lỗi ModuleNotFoundError, hãy thử python -m pip install requests để cài đúng vào bản Python đang dùng.

Gửi yêu cầu GET với python requests

GET là phương thức dùng để lấy dữ liệu từ máy chủ. Đây là loại yêu cầu bạn dùng nhiều nhất.

Requests get in python cơ bản

Hàm requests.get() nhận vào một URL và trả về đối tượng Response.

import requests

r = requests.get("https://httpbin.org/get")
print(r.status_code)   # 200
print(r.text[:100])    # 100 ký tự đầu của nội dung

Trang httpbin.org là dịch vụ thử nghiệm HTTP công khai. Bạn dùng nó để luyện tập mà không ảnh hưởng tới hệ thống thật.

Truyền tham số vào URL bằng params

Thay vì tự ghép chuỗi ?q=python&page=2, bạn đưa tham số vào một dict. Requests tự mã hóa và ghép vào URL.

tham_so = {"q": "python", "page": 2}
r = requests.get("https://httpbin.org/get", params=tham_so)
print(r.url)   # https://httpbin.org/get?q=python&page=2

Cách này tránh lỗi khi giá trị có dấu cách hoặc ký tự tiếng Việt.Requests get in python truyền tham số params - python requests - codegym.vn

Đọc phản hồi trả về từ python requests

Đối tượng Response chứa toàn bộ thông tin máy chủ gửi về. Bạn cần nắm các thuộc tính dưới đây.

Thuộc tính / methodTrả vềKhi nào dùng
r.status_codeMã trạng thái (số)Kiểm tra yêu cầu thành công hay lỗi
r.okTrue nếu mã dưới 400Kiểm tra nhanh
r.textNội dung dạng chuỗiĐọc HTML, văn bản
r.json()Dict hoặc listĐọc dữ liệu JSON từ API
r.contentNội dung dạng bytesTải ảnh, file
r.headersDict các headerXem kiểu nội dung, độ dài

Response status code python thường gặp

Mã trạng thái cho bạn biết kết quả của yêu cầu. Đây là những response status code bạn hay gặp khi dùng Python:

  • 200 OK: yêu cầu thành công.

  • 201 Created: tạo mới dữ liệu thành công, thường gặp sau POST.

  • 400 Bad Request: dữ liệu gửi lên sai định dạng.

  • 401 / 403: chưa đăng nhập hoặc không có quyền truy cập.

  • 404 Not Found: không tìm thấy địa chỉ.

  • 500 Internal Server Error: máy chủ gặp lỗi.

r = requests.get("https://httpbin.org/status/404")
if r.status_code == 200:
    print("Thành công")
else:
    print("Lỗi:", r.status_code)   # Lỗi: 404

Phép so sánh == được giải thích kỹ ở bài Toán tử trong Python.Response status code python thường gặp khi dùng python requests - codegym.vn

Đọc dữ liệu JSON

Phần lớn API trả về JSON. Method r.json() chuyển JSON thành dict của Python để bạn truy cập bằng khóa.

r = requests.get("https://httpbin.org/get", params={"lop": "python"})
du_lieu = r.json()
print(du_lieu["args"])   # {'lop': 'python'}

Nếu nội dung không phải JSON, r.json() sẽ báo lỗi. Hãy kiểm tra status_code trước khi gọi.

Gửi dữ liệu bằng POST trong python requests

POST dùng để gửi dữ liệu lên máy chủ, ví dụ đăng ký tài khoản hoặc tạo bản ghi mới.

Gửi JSON bằng tham số json

Với API hiện đại, bạn truyền dict vào tham số json. Requests tự chuyển sang JSON và đặt header phù hợp.

hoc_vien = {"ten": "An", "khoa": "Python cơ bản"}
r = requests.post("https://httpbin.org/post", json=hoc_vien)
print(r.status_code)        # 200
print(r.json()["json"])     # {'ten': 'An', 'khoa': 'Python cơ bản'}

Gửi dữ liệu biểu mẫu bằng tham số data

Khi máy chủ nhận dữ liệu dạng form HTML, bạn dùng tham số data.

r = requests.post("https://httpbin.org/post", data={"email": "[email protected]"})
print(r.json()["form"])     # {'email': '[email protected]'}

Ngoài GET và POST, requests còn có put(), patch() và delete() để cập nhật hoặc xóa dữ liệu.

Thêm headers, timeout và xử lý lỗi trong python requests

Code gọi mạng có thể gặp nhiều sự cố: mạng chậm, máy chủ không phản hồi, sai địa chỉ. Ba kỹ thuật dưới đây giúp chương trình của bạn chạy ổn định hơn.

Thêm headers vào yêu cầu

Headers là thông tin đi kèm yêu cầu, như loại trình duyệt hoặc mã xác thực API.

headers = {"User-Agent": "hocpython-demo", "Accept": "application/json"}
r = requests.get("https://httpbin.org/headers", headers=headers)
print(r.json()["headers"]["User-Agent"])   # hocpython-demo

Đặt timeout cho mọi yêu cầu

Mặc định, requests có thể chờ rất lâu nếu máy chủ không trả lời. Bạn nên luôn đặt timeout tính bằng giây.

r = requests.get("https://httpbin.org/get", timeout=5)

Bắt lỗi bằng try except

Method raise_for_status() báo lỗi khi mã trạng thái từ 400 trở lên. Kết hợp với try except, bạn kiểm soát được mọi tình huống.

try:
    r = requests.get("https://httpbin.org/status/500", timeout=5)
    r.raise_for_status()
    print(r.json())
except requests.exceptions.Timeout:
    print("Máy chủ phản hồi quá chậm")
except requests.exceptions.HTTPError as loi:
    print("Lỗi HTTP:", loi)
except requests.exceptions.RequestException as loi:
    print("Lỗi kết nối:", loi)

RequestException là lớp lỗi cha, bắt được mọi lỗi của thư viện. Bạn đặt nó ở cuối cùng.Xử lý lỗi và timeout trong python requests - codegym.vn

Dùng Session của python requests khi gửi nhiều yêu cầu

Khi gọi cùng một máy chủ nhiều lần, requests.Session() giữ lại kết nối, cookie và headers chung. Code gọn hơn và chạy nhanh hơn.

with requests.Session() as s:
    s.headers.update({"User-Agent": "hocpython-demo"})
    for trang in range(1, 4):
        r = s.get("https://httpbin.org/get", params={"page": trang}, timeout=5)
        print(trang, r.status_code)

Bạn có thể đặt đoạn code gọi API vào một hàm riêng để dùng lại. Xem cách viết hàm ở bài Python def.

Lỗi thường gặp khi dùng python requests

  • ModuleNotFoundError: No module named 'requests': chưa cài thư viện. Chạy pip install requests.

  • Đặt tên file là requests.py: Python nhập nhầm file của bạn thay vì thư viện. Hãy đổi tên file.

  • Gọi r.json() với trang HTML: báo lỗi giải mã JSON. Kiểm tra r.headers["Content-Type"] trước.

  • Không đặt timeout: chương trình có thể bị treo khi mạng có sự cố.

  • Ghi thẳng khóa API vào code: dễ lộ thông tin khi chia sẻ. Hãy lưu trong biến môi trường.

Câu hỏi thường gặp về python requests

Requests có phải thư viện của Python có sẵn không?

Không. Requests là thư viện bên thứ ba, bạn cần cài bằng pip install requests. Thư viện có sẵn tương đương là urllib.request.

Requests có lấy được nội dung trang web dùng JavaScript không?

Không. Requests chỉ nhận HTML máy chủ trả về, không chạy JavaScript. Với các trang này, bạn cần công cụ điều khiển trình duyệt như Selenium.

Nên dùng params hay ghép URL thủ công?

Bạn nên dùng params. Requests tự mã hóa ký tự đặc biệt, giúp tránh lỗi và code dễ đọc hơn.

Bắt đầu thực hành python requests

Bạn đã biết cách cài đặt, gửi GET và POST, đọc mã trạng thái, xử lý JSON, đặt timeout và bắt lỗi. Hãy chạy lại từng ví dụ với httpbin.org rồi thử gọi một API công khai mà bạn quan tâm.

Đăng ký tài khoản miễn phí để học Python có hướng dẫn từng bước. Bạn nắm chắc nền tảng với khóa Nhập môn Lập trình Python. Sau đó, bạn ứng dụng vào công việc với khóa Tự động hóa công việc với Python hoặc Phân tích dữ liệu với Python và Pandas. Gọi +84 989 534 458 để chúng tôi tư vấn lộ trình phù hợp và giúp bạn dùng thành thạo python requests.

Chia sẻ:
Đã sao chép!

Bài viết liên quan

HỌC PYTHON - CÔNG TY CP CODEGYM VIỆT NAM

MST: 0108104526
Địa chỉ: Căn hộ TT01.23, dự án Hải Đăng city, phường Từ Liêm, thành phố Hà Nội
Điện thoại: +84 989 534 458
Website: codegym.vn