Quay lại blog

Phân tích thực đơn nhà hàng và giá giao hàng: vượt qua các chặn của các nền tảng mà không mất dữ liệu

Phân tích cách thu thập dữ liệu tự động về thực đơn và giá giao hàng từ các nền tảng lớn mà không bị chặn - từ việc chọn công cụ đến cấu hình proxy.

📅1 tháng 7, 2026
```html

Yandex.Eda, Delivery Club, SberMarket và hàng chục nhà cung cấp giao hàng khu vực — là một kho dữ liệu thực sự cho các nhà tiếp thị, nhà phân tích và chủ sở hữu doanh nghiệp nhà hàng. Nhưng ngay khi bắt đầu thu thập giá cả và vị trí thực đơn một cách có hệ thống, các dịch vụ bắt đầu chặn các yêu cầu. Trong bài viết này, chúng ta sẽ phân tích cách tổ chức phân tích thực đơn và giá giao hàng một cách chính xác, những công cụ nào cần sử dụng và cách proxy giúp tránh bị chặn.

Tại sao cần phân tích thực đơn nhà hàng và giá giao hàng

Thị trường giao hàng thực phẩm ở Nga là một trong những phân khúc năng động nhất của thương mại điện tử. Giá cả món ăn, thành phần thực đơn và điều kiện giao hàng thay đổi gần như hàng ngày. Việc theo dõi những thay đổi này bằng tay là không thể, nếu nói về hàng chục đối thủ hoặc hàng trăm vị trí. Chính vì vậy, cần phải thu thập dữ liệu tự động.

Đây là những ai sử dụng phân tích thực đơn và giá cả trong thực tế:

  • Chủ sở hữu nhà hàng và quán cà phê — theo dõi giá cả của đối thủ trong khu vực của họ để điều chỉnh giá cả của mình kịp thời.
  • Nhà tiếp thị của các chuỗi nhà hàng — phân tích các vị trí thực đơn mà đối thủ đang thúc đẩy thông qua các chương trình khuyến mãi và ưu đãi đặc biệt.
  • Nhà phân tích thị trường HoReCa — xây dựng báo cáo về giá trung bình của các loại món ăn ở các thành phố và khu vực khác nhau.
  • Các nhà cung cấp khởi nghiệp — thu thập cơ sở dữ liệu nhà hàng với thực đơn và giá cả cho danh mục của riêng họ.
  • Nhà đầu tư và tư vấn — đánh giá môi trường cạnh tranh trước khi mở một cơ sở mới hoặc nhượng quyền thương mại.
  • Nhà phát triển ứng dụng — tạo cơ sở dữ liệu món ăn cho các ứng dụng tính toán calo hoặc lập kế hoạch dinh dưỡng.

Nếu bạn làm việc trong ngành nhà hàng hoặc phân tích nó, việc theo dõi thường xuyên giá cả của đối thủ không phải là một sự xa xỉ mà là một nhu cầu. Sự khác biệt 30–50 rúp trên một món ăn phổ biến có thể ảnh hưởng trực tiếp đến tỷ lệ chuyển đổi thành đơn hàng. Và nếu không có tự động hóa, bạn sẽ luôn bị tụt lại phía sau những người đã thiết lập thu thập dữ liệu.

Dữ liệu nào được thu thập từ các nhà cung cấp giao hàng

Trước khi thiết lập trình phân tích, điều quan trọng là phải hiểu chính xác dữ liệu nào bạn cần. Các nhà cung cấp giao hàng chứa nhiều lớp thông tin, và mỗi lớp đều hữu ích cho các nhiệm vụ khác nhau.

Loại dữ liệu Bao gồm những gì Hữu ích cho ai
Thực đơn và vị trí Tên món ăn, mô tả, thành phần, trọng lượng, Kcal Nhà phát triển ứng dụng, chuyên gia dinh dưỡng
Giá món ăn Giá hiện tại, giá giảm, lịch sử thay đổi Chủ sở hữu nhà hàng, nhà tiếp thị
Điều kiện giao hàng Chi phí giao hàng, số tiền tối thiểu cho đơn hàng, thời gian giao hàng Nhà phân tích, khởi nghiệp
Khuyến mãi và ưu đãi đặc biệt Giảm giá, combo, món ăn khuyến mãi, ưu đãi theo mùa Nhà tiếp thị, tình báo cạnh tranh
Xếp hạng và đánh giá Đánh giá của cơ sở, số lượng đánh giá, thẻ chất lượng Nhà đầu tư, tư vấn
Dữ liệu địa lý Địa chỉ, khu vực giao hàng, khu vực hiện diện Nhà phân tích thị trường, nhượng quyền thương mại

Việc theo dõi giá cả theo thời gian có giá trị đặc biệt: nếu thu thập dữ liệu một lần mỗi ngày trong vài tháng, bạn có thể thấy các mẫu định giá của đối thủ — khi nào họ tăng giá, khi nào họ bắt đầu khuyến mãi và cách họ phản ứng với các sự kiện bên ngoài (lễ hội, sự kiện thể thao, thời tiết xấu).

Đặc điểm bảo vệ của Yandex.Eda, Delivery Club và những người khác

Các nhà cung cấp giao hàng lớn tích cực bảo vệ dữ liệu của họ khỏi việc thu thập tự động. Và điều này là dễ hiểu: cơ sở dữ liệu nhà hàng và giá cả hiện tại của họ là lợi thế cạnh tranh của họ. Trước khi thiết lập trình phân tích, bạn cần hiểu những loại bảo vệ nào bạn sẽ gặp phải.

Yandex.Eda

Sử dụng nhiều cấp độ bảo vệ cùng một lúc. Thứ nhất, việc định vị địa lý được áp dụng tích cực: nội dung thực đơn và giá cả được hiển thị tùy thuộc vào địa chỉ IP của bạn — nếu IP từ Moscow, bạn sẽ thấy các nhà hàng ở Moscow. Thứ hai, trang web hoạt động như một SPA (Single Page Application) trên React, nghĩa là dữ liệu được tải qua các yêu cầu API, chứ không phải được nhúng trong HTML. Thứ ba, khi có hoạt động nghi ngờ, Yandex SmartCaptcha sẽ được kích hoạt. Khi có nhiều yêu cầu từ một IP, bạn sẽ bị chặn truy cập vào trang web.

Delivery Club (SberMarket)

Kiến trúc tương tự: dữ liệu được cung cấp qua API nội bộ, chứ không phải qua HTML tĩnh. Dịch vụ phân tích các mẫu hành vi: nếu các yêu cầu đến quá nhanh hoặc không có khoảng dừng — sẽ bị chặn. Ngoài ra, việc phân tích User-Agent và tiêu đề yêu cầu cũng được sử dụng. Các tiêu đề không chuẩn ngay lập tức gây nghi ngờ.

Các nhà cung cấp khu vực

Những dịch vụ như Chibbis, Goloso, các nhà cung cấp địa phương trong các khu vực thường có bảo vệ yếu hơn. Một số trong số họ sử dụng các trang HTML đơn giản, có thể được phân tích bằng các công cụ tiêu chuẩn. Tuy nhiên, ở đây việc chặn theo IP khi có nhiều yêu cầu là một thực tiễn tiêu chuẩn.

Các cơ chế chính để chặn các trình phân tích trên các nhà cung cấp giao hàng:

  • Chặn IP khi vượt quá giới hạn yêu cầu (rate limiting)
  • Chặn địa lý — hiển thị nội dung khác nhau cho các IP khác nhau
  • Phân tích User-Agent và tiêu đề HTTP
  • Captcha khi có hoạt động nghi ngờ
  • JavaScript-rendering dữ liệu (kiến trúc SPA)
  • Phân tích hành vi: tốc độ nhấp chuột, cuộn, khoảng dừng

Công cụ phân tích không cần mã và có mã

Tin tốt là bạn không cần phải biết lập trình để phân tích thực đơn nhà hàng. Có những giải pháp no-code sẵn có, có thể xử lý hầu hết các nhiệm vụ. Nhưng để làm việc với các trang web SPA như Yandex.Eda, bạn sẽ cần các công cụ nghiêm túc hơn.

Công cụ No-code (không cần lập trình)

Octoparse — một trong những trình phân tích trực quan phổ biến nhất. Cho phép bạn nhấp vào các phần tử trên trang và xây dựng kịch bản thu thập dữ liệu mà không cần viết mã. Có chế độ đám mây với việc xoay vòng IP. Phù hợp cho việc thu thập thực đơn từ các trang web có cấu trúc đơn giản.

ParseHub — công cụ tương tự với giao diện trực quan. Có thể làm việc với các trang JavaScript, điều này làm cho nó có thể áp dụng cho các nhà cung cấp hiện đại. Có hỗ trợ proxy.

Apify — nền tảng với các "diễn viên" sẵn có (các trình phân tích sẵn có cho các trang web phổ biến). Đối với một số nhà cung cấp giao hàng, đã có các giải pháp sẵn có trong thị trường của họ. Có thể khởi chạy thông qua giao diện web mà không cần mã.

Công cụ có mã (dành cho lập trình viên)

Python + Requests + BeautifulSoup — bộ công cụ cổ điển cho việc phân tích các trang tĩnh. Nhanh chóng, dễ dàng, nhưng không xử lý được việc JavaScript-rendering.

Python + Selenium hoặc Playwright — điều khiển trình duyệt thực (Chrome/Firefox), vì vậy có thể xử lý các trang web SPA, JavaScript và thậm chí một số captcha. Playwright được coi là giải pháp hiện đại và nhanh hơn. Chính bộ công cụ này hoạt động với Yandex.Eda và Delivery Club.

Scrapy — framework chuyên nghiệp cho việc phân tích quy mô lớn trên Python. Hỗ trợ hàng đợi yêu cầu, middleware cho proxy, xuất ra nhiều định dạng khác nhau. Đối với các dự án lớn thu thập dữ liệu về nhà hàng — lựa chọn tối ưu.

Công cụ Cần mã không? JavaScript-rendering Proxy Phù hợp cho
Octoparse Không Một phần Xoay vòng tích hợp Các nhà cung cấp khu vực
ParseHub Không Proxy bên ngoài Hầu hết các nhà cung cấp
Apify Không Tích hợp + bên ngoài Yandex.Eda, Delivery Club
Selenium/Playwright Có (Python) Proxy bên ngoài Bất kỳ trang web nào
Scrapy Có (Python) Qua các plugin Proxy bên ngoài Thu thập dữ liệu quy mô lớn

Tại sao không có proxy thì phân tích không hoạt động

Đây là một câu hỏi quan trọng. Nhiều nhà phân tích mới bắt đầu thử chạy trình phân tích trực tiếp từ IP của họ và ngay lập tức gặp phải việc bị chặn. Nguyên nhân rất đơn giản: các nhà cung cấp giao hàng thấy hàng trăm yêu cầu từ một địa chỉ trong thời gian ngắn và tự động chặn nó. Việc khôi phục quyền truy cập có thể mất từ vài giờ đến vài ngày.

Proxy giải quyết vấn đề này bằng cách phân phối các yêu cầu giữa nhiều địa chỉ IP khác nhau. Từ quan điểm của máy chủ, các yêu cầu trông giống như lưu lượng truy cập bình thường từ nhiều người dùng khác nhau ở nhiều nơi khác nhau. Nhưng không phải tất cả proxy đều hiệu quả như nhau cho nhiệm vụ này.

Proxy cư trú

Proxy cư trú sử dụng địa chỉ IP của người dùng thực tế. Từ quan điểm của Yandex.Eda hoặc Delivery Club — đây là một người bình thường, người đã vào xem thực đơn của nhà hàng. Những proxy này gần như không bị chặn khi được sử dụng đúng cách. Đây là lựa chọn lý tưởng cho việc thu thập dữ liệu từ các nhà cung cấp lớn với bảo vệ nghiêm ngặt.

Proxy di động

Proxy di động — địa chỉ IP của các nhà mạng di động (MTS, Beeline, MegaFon, v.v.). Đặc điểm của chúng là một IP di động có thể được sử dụng bởi hàng nghìn người dùng thực tế cùng một lúc (thông qua NAT), vì vậy các trang web rất hiếm khi chặn các địa chỉ di động. Điều này làm cho chúng trở thành một trong những lựa chọn đáng tin cậy nhất cho việc phân tích với tần suất yêu cầu cao.

Proxy trung tâm dữ liệu

Proxy trung tâm dữ liệu — nhanh nhất và rẻ nhất, nhưng địa chỉ IP của chúng dễ dàng bị xác định là "không phải con người". Đối với các nhà cung cấp khu vực với bảo vệ đơn giản, chúng sẽ phù hợp, nhưng Yandex.Eda và Delivery Club sẽ chặn chúng khá nhanh. Tuy nhiên, proxy trung tâm dữ liệu hoạt động tốt cho việc khám phá cấu trúc trang web ban đầu và thử nghiệm trình phân tích trước khi khởi động chính thức.

Loại proxy nào nên chọn cho việc phân tích thực đơn:

  • Yandex.Eda, Delivery Club → proxy cư trú hoặc di động
  • Các nhà cung cấp khu vực (Chibbis, v.v.) → proxy trung tâm dữ liệu hoặc cư trú
  • Thu thập dữ liệu trên toàn nước Nga (các thành phố khác nhau) → proxy cư trú với định vị địa lý theo thành phố
  • Theo dõi tần suất cao (mỗi giờ) → proxy di động với xoay vòng

Thiết lập từng bước cho trình phân tích với proxy

Chúng ta sẽ phân tích một kịch bản thực tế: bạn muốn thu thập giá pizza hàng ngày từ 20 đối thủ trong thành phố của bạn từ Yandex.Eda. Đây là cách thiết lập từng bước.

Bước 1. Nghiên cứu cấu trúc API của nhà cung cấp

Mở Yandex.Eda trong trình duyệt, nhấn F12 (DevTools), chuyển đến tab Network và lọc các yêu cầu theo XHR/Fetch. Tìm trang của nhà hàng và xem các yêu cầu API nào được gửi khi tải thực đơn. Thông thường, đó là một cái gì đó giống như api/v1/menu?restaurantId=.... Ghi lại các tiêu đề của những yêu cầu này — chúng sẽ cần thiết cho việc giả lập.

Bước 2. Chọn công cụ

Nếu bạn không viết mã — hãy sử dụng Apify hoặc ParseHub. Nếu bạn viết bằng Python — Playwright sẽ là lựa chọn tối ưu cho việc làm việc với các trang web JavaScript. Cài đặt công cụ cần thiết và đảm bảo rằng nó hỗ trợ kết nối proxy bên ngoài.

Bước 3. Nhận proxy với định vị địa lý

Đây là một điểm quan trọng. Yandex.Eda hiển thị các nhà hàng khác nhau tùy thuộc vào thành phố. Nếu bạn phân tích thực đơn của các nhà hàng ở Yekaterinburg — bạn cần proxy với IP từ Yekaterinburg. Proxy cư trú với định vị địa lý theo thành phố cho phép bạn nhận được chính xác nội dung mà người dùng địa phương thấy. Hãy chỉ định khu vực cần thiết khi thiết lập proxy.

Bước 4. Thiết lập xoay vòng proxy

Đừng sử dụng một proxy cho tất cả các yêu cầu. Thiết lập xoay vòng: sau mỗi 5–10 yêu cầu, thay đổi IP. Trong Apify, điều này được thực hiện thông qua cài đặt nhóm proxy. Trong Scrapy — thông qua middleware. Trong Playwright — thông qua việc truyền proxy mới khi tạo ngữ cảnh trình duyệt. Càng thường xuyên thay đổi IP, rủi ro bị chặn càng thấp.

Bước 5. Thiết lập độ trễ giữa các yêu cầu

Thêm các khoảng dừng ngẫu nhiên giữa các yêu cầu — từ 2 đến 8 giây. Điều này mô phỏng hành vi của người dùng thực. Không bao giờ thực hiện các yêu cầu với khoảng cách dưới 1 giây — đó là con đường chắc chắn dẫn đến việc bị cấm. Trong Scrapy, sử dụng tham số DOWNLOAD_DELAY và bật AUTOTHROTTLE_ENABLED.

Bước 6. Thiết lập tiêu đề yêu cầu đúng cách

Luôn luôn truyền User-Agent thực tế (chuỗi trình duyệt), tiêu đề Accept-Language (ví dụ: ru-RU,ru;q=0.9) và Referer. Các yêu cầu không có những tiêu đề này trông giống như bot và sẽ bị chặn trước tiên. Sử dụng các chuỗi User-Agent hiện tại từ Chrome hoặc Firefox.

Bước 7. Thiết lập lịch trình và lưu trữ dữ liệu

Khởi động trình phân tích vào ban đêm (từ 2:00 đến 6:00) — tải trên các máy chủ của nhà cung cấp là tối thiểu, và lưu lượng nghi ngờ ít bị chú ý hơn. Lưu trữ dữ liệu vào cơ sở dữ liệu (PostgreSQL, MySQL) hoặc ít nhất là vào CSV với dấu thời gian. Điều này sẽ cho phép xây dựng lịch sử thay đổi giá cả.

# Ví dụ về thiết lập proxy trong Playwright (Python)
from playwright.sync_api import sync_playwright
import random
import time

proxies = [
    {"server": "http://proxy1.example.com:8080", "username": "user", "password": "pass"},
    {"server": "http://proxy2.example.com:8080", "username": "user", "password": "pass"},
    # ... nhiều proxy hơn
]

def parse_restaurant_menu(url):
    proxy = random.choice(proxies)
    
    with sync_playwright() as p:
        browser = p.chromium.launch()
        context = browser.new_context(
            proxy=proxy,
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
        )
        page = context.new_page()
        
        # Độ trễ ngẫu nhiên 2-8 giây
        time.sleep(random.uniform(2, 8))
        
        page.goto(url)
        page.wait_for_selector('.menu-item')  # chờ tải thực đơn
        
        # Thu thập dữ liệu về món ăn
        items = page.query_selector_all('.menu-item')
        menu_data = []
        for item in items:
            name = item.query_selector('.item-name').inner_text()
            price = item.query_selector('.item-price').inner_text()
            menu_data.append({'name': name, 'price': price})
        
        browser.close()
        return menu_data

Những lỗi thường gặp và cách tránh chúng

Ngay cả khi thiết lập công cụ đúng cách, nhiều người vẫn gặp vấn đề khi phân tích dữ liệu về giao hàng thực phẩm. Đây là những lỗi phổ biến nhất và cách khắc phục chúng.

Lỗi 1: Sử dụng một proxy cho tất cả các yêu cầu

Ngay cả proxy cư trú chất lượng nhất cũng sẽ bị chặn nếu có hàng trăm yêu cầu mỗi ngày đến một trang web. Luôn sử dụng một nhóm ít nhất 10–20 proxy với xoay vòng. Càng nhiều nhà hàng bạn phân tích, bạn càng cần nhiều proxy.

Lỗi 2: Bỏ qua định vị địa lý

Yandex.Eda và Delivery Club hiển thị nội dung khác nhau tùy thuộc vào thành phố của người dùng. Nếu bạn muốn thu thập dữ liệu về các nhà hàng ở Novosibirsk, nhưng sử dụng proxy từ Moscow — bạn sẽ nhận được dữ liệu từ Moscow. Luôn kiểm tra rằng proxy phù hợp với khu vực cần thiết.

Lỗi 3: Phân tích HTML thay vì API

Những người mới bắt đầu phân tích cố gắng thu thập dữ liệu từ mã HTML của các trang. Nhưng trên các trang SPA (và Yandex.Eda là một trong số đó), dữ liệu không được nhúng trong HTML — chúng được tải qua API. Hiệu quả hơn nhiều khi tìm điểm cuối API cần thiết thông qua DevTools và gọi trực tiếp đến nó. Điều này nhanh hơn, ổn định hơn và yêu cầu ít tài nguyên hơn.

Lỗi 4: Tần suất yêu cầu quá cao

Mong muốn thu thập dữ liệu nhanh chóng là điều dễ hiểu, nhưng điều này dẫn đến việc bị chặn ngay lập tức. Đối với việc theo dõi giá hàng ngày từ 50 nhà hàng, chỉ cần khởi động trình phân tích một lần mỗi ngày với khoảng dừng 3–5 giây giữa các yêu cầu. Đừng cố gắng tăng tốc quá trình bằng cách giảm độ trễ.

Lỗi 5: Thiếu giám sát tính khả dụng của proxy

Proxy có thể "chết" — chúng bị chặn, hết hạn sử dụng. Nếu trình phân tích tiếp tục hoạt động với proxy bị chặn, bạn sẽ nhận được dữ liệu trống hoặc lỗi mà không nhận ra vấn đề. Thiết lập kiểm tra tính khả dụng của proxy trước mỗi lần khởi động và tự động thay thế các địa chỉ không hoạt động.

Lỗi 6: Bỏ qua thay đổi cấu trúc trang web

Các nhà cung cấp thường xuyên cập nhật trang web và API của họ. Trình phân tích hoạt động cách đây một tháng có thể ngừng hoạt động sau khi cập nhật mới. Thiết lập thông báo lỗi và kiểm tra tính khả dụng của trình phân tích ít nhất một lần mỗi tuần. Giữ tài liệu về cấu trúc dữ liệu mà bạn đang thu thập.

Danh sách kiểm tra trước khi khởi động trình phân tích thực đơn nhà hàng:

  • ✅ Đã thiết lập nhóm từ 10+ proxy với xoay vòng
  • ✅ Proxy phù hợp với thành phố/khu vực cần thiết
  • ✅ Độ trễ giữa các yêu cầu 3–8 giây (ngẫu nhiên)
  • ✅ Đã thiết lập User-Agent thực tế
  • ✅ Đã thêm tiêu đề Accept-Language và Referer
  • ✅ Đã thiết lập lưu trữ dữ liệu với dấu thời gian
  • ✅ Đã bật giám sát lỗi và thông báo
  • ✅ Khởi động được lên lịch vào ban đêm

Kết luận

Phân tích thực đơn nhà hàng và giá giao hàng là một công cụ thực sự mang lại lợi thế cạnh tranh trong ngành nhà hàng và phân tích thị trường HoReCa. Yandex.Eda, Delivery Club và các nhà cung cấp khác tích cực bảo vệ dữ liệu của họ, nhưng với cách tiếp cận đúng đắn — lựa chọn công cụ hợp lý, thiết lập độ trễ và sử dụng proxy chất lượng — việc thu thập dữ liệu hoạt động ổn định và không bị chặn.

Những điểm chính từ bài viết này: sử dụng các công cụ hỗ trợ JavaScript-rendering (Playwright, Apify), thiết lập xoay vòng proxy, đừng quên định vị địa lý và luôn thêm các khoảng dừng ngẫu nhiên giữa các yêu cầu. Đây là ba trụ cột của việc phân tích ổn định.

Nếu bạn dự định thu thập dữ liệu thường xuyên từ Yandex.Eda, Delivery Club hoặc các nhà cung cấp giao hàng khu vực, chúng tôi khuyên bạn nên chú ý đến proxy cư trú — chúng cung cấp khả năng chống chặn tối đa và hỗ trợ định vị địa lý theo các thành phố của Nga, điều này cực kỳ quan trọng cho việc thu thập dữ liệu chính xác về giá cả trong các khu vực cụ thể.

```