Đăng nhập

Bài 26: Dùng requests để lấy dữ liệu web

Ta bước sang Phần 3: Ứng dụng & Nâng cao – nơi bạn sẽ kết nối Python với thế giới bên ngoài, xử lý dữ liệu thực, tạo API, tự động hóa công việc… và đặc biệt: biến Python thành công cụ giải quyết vấn đề thật.


Dữ liệu ở khắp nơi – vấn đề là bạn có biết “kéo về” không?

Trang web nào bạn truy cập mỗi ngày cũng đang phát ra dữ liệu. Từ tỷ giá USD, thời tiết, giá coin, tin tức… đến danh sách bài viết trên một blog.

Và Python chính là công cụ giúp bạn lấy dữ liệu từ web một cách có tổ chức.


Mục tiêu bài học

  • Biết cách cài và dùng thư viện requests
  • Gửi yêu cầu (request) tới một trang web/API
  • Nhận phản hồi (response) và xử lý dữ liệu trả về
  • Làm quen với khái niệm Web API – JSON
  • Biết cách kiểm tra kết quả và xử lý lỗi

1. Giới thiệu thư viện requests

Thư viện này giúp Python gửi yêu cầu HTTP (GET, POST…) tới website.

📦 Cài đặt:

pip install requests

📚 Import vào code:

import requests

2. Gửi yêu cầu GET tới một URL

import requests

url = "https://api.github.com"

res = requests.get(url)

print("Mã trạng thái:", res.status_code)
print("Nội dung trả về:")
print(res.text)

3. Kiểm tra phản hồi

if res.status_code == 200:
    print("Yêu cầu thành công!")
else:
    print("Lỗi khi lấy dữ liệu:", res.status_code)

4. Trích xuất dữ liệu JSON

Nếu web trả về định dạng JSON (rất phổ biến với API), bạn có thể dùng .json():

data = res.json()
print(data["current_user_url"])

5. Ví dụ thực tế: Lấy dữ liệu tỷ giá USD/VND

Dùng API miễn phí của Exchangerate.host:

url = "https://api.exchangerate.host/latest?base=USD&symbols=VND"

res = requests.get(url)
data = res.json()

ty_gia = data["rates"]["VND"]
print("💵 Tỷ giá USD/VND:", ty_gia)

6. Một số lỗi thường gặp

Tình huốngXử lý
Không có mạngrequests.exceptions.ConnectionError
API trả lỗiKiểm tra status_code != 200
Dữ liệu không phải JSON.json() sẽ lỗi → dùng .text

7. Thêm headers (giả lập trình duyệt)

Một số web yêu cầu headers như trình duyệt:

headers = {
    "User-Agent": "Mozilla/5.0"
}
res = requests.get(url, headers=headers)

8. Bài tập luyện tập

Bài 1: Dùng API của OpenWeatherMap để lấy nhiệt độ Hà Nội
👉 https://api.openweathermap.org/data/2.5/weather?q=Hanoi&appid=YOUR_API_KEY&units=metric

Bài 2: Gửi yêu cầu đến https://api.coindesk.com/v1/bpi/currentprice.json
In ra giá Bitcoin hiện tại theo USD

Bài 3: Tạo một script hỏi tên thành phố, sau đó in ra thời tiết hiện tại


Bạn đã học được:

  • Gửi yêu cầu tới web bằng requests
  • Kiểm tra phản hồi và xử lý dữ liệu trả về
  • Trích xuất dữ liệu JSON
  • Là nền tảng để làm web scraper, kết nối API, tự động hoá
  • Bước đầu làm chủ cách web và dữ liệu tương tác với nhau

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.