CodeGym /Khóa học Java /Python SELF VI /Làm việc với API để web scraping

Làm việc với API để web scraping

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Giới thiệu về API

API, hay còn gọi là Application Programming Interface (Giao diện lập trình ứng dụng), là tập hợp các quy tắc và cơ chế cho phép các ứng dụng và thành phần tương tác với nhau. Hãy tưởng tượng API giống như một người phục vụ trong nhà hàng. Bạn (chương trình) gọi món (request), người phục vụ (API) truyền đơn đặt hàng tới bếp (server) và sau đó trả lại món ăn (response) cho bạn. Trong trường hợp web scraping, API cho phép bạn lấy dữ liệu trực tiếp từ server mà không cần phải phân tích mã HTML.

API so với HTML scraping

Trong khi chúng ta đã học cách làm web scraping bằng các công cụ như BeautifulSoup, chúng ta phải đối mặt với nhiều thách thức: phân tích cấu trúc HTML, tìm các phần tử cần thiết và thuộc tính của chúng. Với API, mọi thứ đơn giản hơn một chút: bạn nhận được dữ liệu có cấu trúc (thường ở định dạng JSON) trực tiếp, không cần phải giải mã đống thẻ HTML phức tạp. Nó giống như thay vì phải lắp ráp một mô hình xây dựng, bạn đã có sẵn hướng dẫn và các linh kiện.

Ưu điểm của API:

  • Dữ liệu có cấu trúc: hầu hết các API trả về dữ liệu ở dạng có cấu trúc (ví dụ: JSON), điều này làm cho việc xử lý dữ liệu trở nên dễ dàng hơn nhiều.
  • Ổn định: Các endpoint của API thay đổi ít thường xuyên hơn so với mã HTML của các trang web.
  • Hiệu quả: Lấy dữ liệu qua API thường nhanh hơn và tốn ít tài nguyên hơn.
  • Vượt qua hạn chế: Nhiều trang web hạn chế dữ liệu khỏi scraping nhưng lại cung cấp quyền truy cập qua API.

Nhược điểm của API:

  • Hạn chế truy cập: Truy cập API có thể yêu cầu đăng ký, đôi khi là trả phí.
  • Hạn chế tốc độ và số lượng request: API thường áp đặt giới hạn về số lượng request trong một khoảng thời gian nhất định.
  • Cần tìm hiểu tài liệu: Để làm việc hiệu quả với API, cần dành thời gian để nghiên cứu tài liệu của API đó.

2. Ứng dụng thực tế của API

Cài đặt và các request cơ bản

Để làm việc với API, chúng ta sẽ sử dụng thư viện requests mà chắc chắn bạn đã nắm được. Hãy cùng viết một ứng dụng đơn giản để lấy thông tin về thời tiết từ API OpenWeather (bởi vì lập trình không chỉ là 0 và 1 mà còn là mưa hay nắng nữa).

Python
import requests

# Thay 'your_api_key' bằng khóa API của bạn
api_key = 'your_api_key'
city = 'Moscow'
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

response = requests.get(url)
# Kiểm tra request có thành công không
if response.status_code == 200:
    data = response.json()
    print(f"Nhiệt độ ở {city}: {data['main']['temp']}K")
else:
    print("Lỗi khi lấy dữ liệu thời tiết")

Phân tích và xử lý dữ liệu

JSON – nó giống như CSV, chỉ là ngầu hơn một chút! Cấu trúc JSON giống như dictionaries và lists trong Python, nên việc xử lý dữ liệu trở nên trực quan. Trong ví dụ trên, chúng ta đã lấy nhiệt độ chỉ bằng cách chỉ ra đường dẫn đến dữ liệu cần thiết (data['main']['temp']).

Tình huống thực tế: làm việc với API cho quy trình kinh doanh

Trong đời thực, API có thể làm cho cuộc sống của bạn dễ dàng hơn nhiều. Hãy tưởng tượng bạn phát triển một dịch vụ hiển thị tin tức. Thay vì scraping hàng chục trang web, bạn có thể sử dụng API của các hãng tin để cung cấp các bài viết mới một cách đơn giản. Hoặc nếu bạn muốn tích hợp thanh toán vào website của mình, API của các hệ thống thanh toán (như PayPal hoặc Stripe) sẽ giải quyết vấn đề dễ dàng.

3. Ví dụ sử dụng các API mở

Ví dụ: Làm việc với NewsAPI

Hãy xây dựng một tiện ích đơn giản để lấy tin tức mới nhất.

Python
import requests

api_key = 'your_news_api_key'
url = f'https://newsapi.org/v2/top-headlines?country=us&apiKey={api_key}'

response = requests.get(url)
if response.status_code == 200:
    articles = response.json().get('articles', [])
    for article in articles:
        print(f"Tiêu đề: {article['title']}")
        print(f"Mô tả: {article['description']}")
else:
    print("Lỗi khi lấy tin tức")

Ví dụ phân tích dữ liệu từ API

Sử dụng API có thể không chỉ hữu ích cho việc trao đổi thông tin mà còn để phân tích dữ liệu. Ví dụ, với API của các sàn giao dịch, bạn có thể lấy dữ liệu về tỷ giá và cổ phiếu để phân tích thị trường hoặc dự báo.

4. Chiến lược làm việc với API

Đọc tài liệu

Tài liệu – đây là người bạn tốt nhất của bạn khi làm việc với API. Nó mô tả tất cả các endpoint khả dụng, các tham số request có thể sử dụng, định dạng dữ liệu trả về và các hạn chế. Đừng coi thường thời gian bỏ ra để đọc tài liệu – đó là khoản đầu tư sẽ mang lại kết quả tốt.

Xác thực và quyền truy cập

Hầu hết API yêu cầu xác thực để bạn có thể sử dụng. Thông thường điều này được thực hiện bằng các khóa API hoặc token. Nếu khóa API hết hạn hoặc không được cung cấp, bạn sẽ nhận lỗi. Hãy đảm bảo giữ các khóa bảo mật của bạn ở nơi an toàn và không đưa chúng vào các kho lưu trữ công khai.

Giới hạn số lượng request và xử lý response

API thường giới hạn số lượng request bạn có thể thực hiện. Ví dụ, phiên bản miễn phí có thể chỉ cho phép 100 request mỗi ngày. Trong trường hợp đó, điều quan trọng là tối ưu hóa các request của bạn và xử lý các tình huống khi giới hạn request bị vượt quá. Bạn có thể làm điều này bằng cách đặt timeout hoặc thêm khoảng thời gian giữa các request.

5. Kết nối API để tạo báo cáo

Bây giờ khi chúng ta đã hiểu một chút về cách hoạt động của API, hãy thực hiện một dự án nhỏ. Giả sử chúng ta đang làm việc với một ứng dụng thu thập dữ liệu về thời tiết và lưu chúng vào báo cáo.

Python
import requests
import pandas as pd
from datetime import datetime

api_key = 'your_api_key'
cities = ['Moscow', 'New York', 'London']
weather_data = []

for city in cities:
    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        weather_data.append({
            'City': city,
            'Temperature': data['main']['temp'],
            'Humidity': data['main']['humidity'],
            'Description': data['weather'][0]['description'],
            'Timestamp': datetime.now()
        })
    else:
        print(f"Lỗi khi lấy dữ liệu thời tiết ở {city}")

# Chuyển đổi dữ liệu thành DataFrame
df = pd.DataFrame(weather_data)

# Lưu dữ liệu thành file Excel
df.to_excel('weather_report.xlsx', index=False)

Với đoạn mã này, chúng ta lấy dữ liệu thời tiết của một số thành phố, thu thập chúng và lưu vào báo cáo Excel. Đây là một ví dụ đơn giản nhưng mạnh mẽ về cách sử dụng API để xây dựng các hệ thống thu thập dữ liệu tự động.

Đối với chúng ta, API giống như một chiếc chìa khóa thần kỳ để truy cập vào lượng dữ liệu lớn, thường không khả dụng trong các trang HTML thông thường. Chúng cho phép chúng ta trao đổi thông tin, tạo ra các ứng dụng mạnh mẽ và tiết kiệm thời gian. Hãy sử dụng chúng và để các dự án của bạn tỏa sáng!

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION