Python For Data Analysis: Phân Tích Dữ Liệu Cho Người Mới
Python for data analysis là cách dùng Python để làm sạch, thống kê và vẽ biểu đồ dữ liệu bằng Pandas...
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.
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.
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.
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.
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.
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.
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.
Đố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 / method | Trả về | Khi nào dùng |
|---|---|---|
r.status_code | Mã trạng thái (số) | Kiểm tra yêu cầu thành công hay lỗi |
r.ok | True nếu mã dưới 400 | Kiểm tra nhanh |
r.text | Nộ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.content | Nội dung dạng bytes | Tải ảnh, file |
r.headers | Dict các header | Xem kiểu nội dung, độ dài |
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.
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.
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.
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'}
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.
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.
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
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)
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.
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.
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.
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.
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.
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ạ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.
Python for data analysis là cách dùng Python để làm sạch, thống kê và vẽ biểu đồ dữ liệu bằng Pandas...
Python set là kiểu dữ liệu lưu tập hợp các phần tử không trùng lặp và không có thứ tự, viết trong ng...
Python list là kiểu dữ liệu lưu nhiều giá trị trong một biến, viết trong ngoặc vuông và ngăn cách bằ...