0
0
Lập trình
Admin Team
Admin Teamtechmely

Xây dựng Công cụ Web Scraping với FastMCP & Zyte API

Đăng vào 3 giờ trước

• 4 phút đọc

Giới thiệu

Công cụ Web Scraping đang trở thành một phần quan trọng trong việc thu thập dữ liệu từ các trang web. Trong bài viết này, chúng ta sẽ tìm hiểu cách xây dựng một MCP Server mạnh mẽ bằng cách sử dụng FastMCPZyte API. Điều này sẽ giúp AI của bạn có khả năng truy cập thông tin trực tiếp từ web một cách hiệu quả.

Tại sao cần MCP Server?

Lý do chính để xây dựng một MCP (Model Context Protocol) Server là để cung cấp cho AI khả năng tương tác với dữ liệu hiện tại trên internet. Hãy tưởng tượng một AI có thể tự động thu thập giá sản phẩm, tải về các bài viết mới nhất hay phân tích HTML của một trang web. MCP Server giúp biến điều này thành hiện thực.

Cách hoạt động của MCP Server

  1. AI đặt câu hỏi cần dữ liệu trực tiếp, chẳng hạn như “Giá của iPhone mới trên trang web Apple là bao nhiêu?”.
  2. AI nhận ra rằng nó không thể trả lời từ bộ nhớ.
  3. AI tìm công cụ phù hợp, ví dụ như extract_product để lấy dữ liệu sản phẩm từ URL.
  4. AI gọi MCP Server để chạy công cụ extract_product với URL của iPhone.
  5. Server thực hiện lệnh, sử dụng Zyte API để lấy dữ liệu và trả về thông tin đã được cấu trúc (giá, tình trạng sẵn có, v.v.).
  6. AI nhận dữ liệu và cung cấp câu trả lời chính xác, cập nhật.

Kiến trúc: Xây dựng một Công cụ Chuyên nghiệp

Nền tảng: Khách hàng API Dedicating

Để quản lý các yêu cầu tới Zyte API một cách hiệu quả, chúng ta sẽ xây dựng một lớp ZyteAPIClient. Lớp này giúp tách biệt logic xử lý API và làm cho mã nguồn trở nên dễ đọc và bảo trì hơn.

Ví dụ mã nguồn: Khách hàng API

python Copy
class ZyteAPIClient:
    def __init__(self, api_key: str, timeout: int = 30):
        self.api_key = api_key
        self.base_url = "https://api.zyte.com/v1/extract"
        self.timeout = timeout
        self.session = requests.Session()

    def _make_request(self, payload: Dict[str, Any]) -> ZyteAPIResponse:
        response = self.session.post(
            self.base_url,
            auth=(self.api_key, ""),
            json=payload,
            timeout=self.timeout
        )
        response.raise_for_status()
        return ZyteAPIResponse(**response.json())

Lập kế hoạch: Sử dụng Pydantic để Đảm bảo Tính toàn vẹn Dữ liệu

Sử dụng Pydantic giúp chúng ta định nghĩa các mô hình dữ liệu và đảm bảo rằng dữ liệu nhận được từ API luôn đúng định dạng.

Ví dụ mô hình Pydantic

python Copy
class ProductResponse(BaseModel):
    name: Optional[str] = None
    price: Optional[str] = None
    currency: Optional[str] = None

Tạo công cụ với FastMCP

Sử dụng FastMCP, chúng ta có thể dễ dàng định nghĩa các công cụ cho AI để lấy dữ liệu.

Ví dụ định nghĩa công cụ

python Copy
@mcp.tool
def extract_product(url: str) -> dict:
    response = zyte_client.extract_product(url)
    return response.model_dump()

Khởi động Server

Cuối cùng, chúng ta khởi động MCP Server bằng một dòng lệnh đơn giản.

python Copy
if __name__ == "__main__":
    mcp.run()

Mã nguồn hoàn chỉnh

Dưới đây là mã nguồn hoàn chỉnh để chạy:

python Copy
from fastmcp import FastMCP
import requests
from pydantic import BaseModel

class ProductResponse(BaseModel):
    name: Optional[str] = None
    price: Optional[str] = None

class ZyteAPIClient:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.zyte.com/v1/extract"
        self.session = requests.Session()

    def extract_product(self, url: str) -> ProductResponse:
        response = self.session.post(self.base_url, json={"url": url})
        return ProductResponse(**response.json())

mcp = FastMCP("zyte-mcp-server")
zyte_client = ZyteAPIClient(API_KEY)

@mcp.tool
def extract_product(url: str) -> dict:
    response = zyte_client.extract_product(url)
    return response.model_dump()

if __name__ == "__main__":
    mcp.run()

Kết luận

Xây dựng một MCP Server với FastMCP và Zyte API không chỉ giúp AI thu thập dữ liệu hiệu quả mà còn mở rộng khả năng của nó trong việc tương tác với dữ liệu trực tuyến. Hãy bắt đầu xây dựng công cụ của bạn ngay hôm nay và tận dụng sức mạnh của dữ liệu!

Câu hỏi thường gặp (FAQ)

1. Tôi có cần kiến thức lập trình để xây dựng MCP Server không?
Có, bạn cần có kiến thức cơ bản về lập trình Python và cách sử dụng các API.

2. Zyte API có miễn phí không?
Zyte API cung cấp một số tín dụng miễn phí khi bạn đăng ký lần đầu.

3. Có thể tích hợp MCP Server với các hệ thống AI khác không?
Có, MCP Server có thể được tích hợp với bất kỳ hệ thống AI nào có khả năng gọi API.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào