Quay lại blog

Thu thập dữ liệu cho bộ dữ liệu machine learning: cách thu thập hàng ngàn trang mà không bị chặn và captcha

Phân tích cách thu thập khối lượng lớn dữ liệu cho bộ dữ liệu ML mà không bị cấm và không có captcha - chọn proxy nào và cách thiết lập quy trình.

📅14 tháng 3, 2026
```html

Chất lượng của mô hình ML phụ thuộc trực tiếp vào chất lượng và khối lượng dữ liệu huấn luyện. Nhưng ngay khi bạn bắt đầu thu thập hàng ngàn trang — các trang web bắt đầu chặn các yêu cầu, hiển thị captcha và cấm IP. Trong bài viết này, chúng ta sẽ phân tích cách xây dựng một quy trình thu thập dữ liệu đáng tin cậy cho các bộ dữ liệu: công cụ nào để sử dụng, cách vượt qua các biện pháp bảo vệ và loại proxy nào phù hợp cho từng nhiệm vụ.

Tại sao các trang web chặn việc thu thập dữ liệu và phải làm gì với điều đó

Khi bạn khởi động việc thu thập dữ liệu tự động, trang web không thấy một người dùng bình thường mà thấy một luồng yêu cầu từ một địa chỉ IP. Điều này ngay lập tức dấy lên các cờ đỏ trong hệ thống bảo vệ — Cloudflare, DataDome, PerimeterX và các giải pháp chống bot khác. Kết quả: captcha, chặn tạm thời hoặc cấm hoàn toàn IP.

Vấn đề này đặc biệt nghiêm trọng đối với các dự án ML, vì bộ dữ liệu yêu cầu không phải 100 trang, mà là hàng chục ngàn. Để huấn luyện ngay cả một mô hình phân loại văn bản đơn giản, cần tối thiểu 5.000–10.000 ví dụ. Đối với thị giác máy tính — hàng trăm ngàn hình ảnh. Việc thu thập khối lượng lớn như vậy từ một IP là không thể.

Các hệ thống bảo vệ phân tích các tham số sau:

  • Tần suất yêu cầu — hơn 10–20 yêu cầu mỗi phút từ một IP đã là đáng ngờ.
  • User-Agent và tiêu đề — các tiêu đề tiêu chuẩn của trình phân tích dễ dàng bị nhận diện.
  • Thiếu cookie và dữ liệu phiên — trình duyệt thực luôn mang theo lịch sử.
  • Địa lý IP — IP của trung tâm dữ liệu từ Hà Lan trên một trang web tiếng Nga trông rất đáng ngờ.
  • Hành vi — con người đọc trang từ 30–60 giây, bot — 0,3 giây.

Giải pháp — kết hợp proxy đúng, luân phiên IP và giả lập hành vi của người dùng thực. Chúng ta sẽ phân tích từng yếu tố chi tiết hơn.

Nguồn dữ liệu cho ML-datasets: các nguồn chính

Trước khi nói về các công cụ, điều quan trọng là phải hiểu — dữ liệu cho việc huấn luyện mô hình đến từ đâu. Các nguồn dữ liệu được chia thành nhiều loại, và mỗi loại cần một cách tiếp cận riêng.

Bộ dữ liệu mở (không cần phân tích)

Điều đầu tiên cần kiểm tra — các bộ dữ liệu mở đã tồn tại. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository chứa hàng ngàn bộ dữ liệu sẵn có. Nếu nhiệm vụ của bạn là tiêu chuẩn (phân loại văn bản, nhận diện đối tượng, phân tích cảm xúc), có thể bộ dữ liệu đã tồn tại. Điều này tiết kiệm hàng tuần làm việc.

Phân tích web (cần proxy)

Khi không có dữ liệu sẵn có hoặc chúng không phù hợp với đặc điểm của bạn — cần phân tích. Các nhiệm vụ điển hình:

  • Thu thập đánh giá từ Wildberries, Ozon, Yandex.Market để phân tích cảm xúc
  • Phân tích các trang tin tức để huấn luyện các mô hình ngôn ngữ
  • Thu thập hình ảnh sản phẩm cho các mô hình thị giác máy tính
  • Phân tích các vị trí tuyển dụng từ hh.ru, SuperJob cho các mô hình HR
  • Thu thập dữ liệu về giá từ các chợ điện tử cho các mô hình dự đoán
  • Phân tích mạng xã hội (VKontakte, Twitter/X) cho các nhiệm vụ NLP

API của các nền tảng (một phần đóng)

Một số nền tảng cung cấp API chính thức — Twitter/X API, Reddit API, Google Places API. Vấn đề: chúng đắt, có giới hạn và thường không cung cấp đủ khối lượng dữ liệu miễn phí. Do đó, nhiều đội ngũ ML kết hợp API với phân tích.

Dữ liệu tổng hợp

Một cách tiếp cận riêng biệt — tạo ra dữ liệu tổng hợp bằng cách sử dụng GPT-4 hoặc các LLM khác. Nhưng để làm điều này, vẫn cần dữ liệu thực làm cơ sở (ví dụ few-shot). Do đó, phân tích vẫn là công cụ cơ bản để thu thập dữ liệu cho hầu hết các dự án ML.

Công cụ thu thập dữ liệu mà không cần viết mã

Tin tốt: để thu thập dữ liệu cho ML-datasets không nhất thiết phải là lập trình viên. Có sẵn các công cụ no-code và low-code có thể làm việc với proxy và vượt qua các biện pháp bảo vệ cơ bản.

Trình phân tích no-code

Công cụ Phù hợp cho việc gì Hỗ trợ proxy Độ khó
Octoparse Các trang web, bảng, phân trang ✅ Có Thấp
ParseHub Các trang web động (JS) ✅ Có Thấp
Apify Các tác nhân sẵn có cho 100+ trang web ✅ Tích hợp sẵn Trung bình
Bright Data IDE Các trang web bảo vệ phức tạp ✅ Tích hợp sẵn Trung bình
Scrapy Cloud Phân tích quy mô lớn ✅ Qua middleware Cao

Đối với hầu hết các nhiệm vụ thu thập dữ liệu ML, Octoparse hoặc Apify là đủ. Octoparse cho phép bạn thiết lập trình phân tích một cách trực quan trong 20–30 phút: chỉ định các phần tử trên trang, thiết lập phân trang, chèn proxy — và khởi động thu thập. Kết quả được xuất ra định dạng CSV hoặc JSON, có thể sử dụng ngay cho việc huấn luyện.

Apify đặc biệt tiện lợi nếu bạn cần phân tích các nền tảng phổ biến: họ có các "tác nhân" sẵn có cho Instagram, Twitter/X, Amazon, Google Maps, LinkedIn và hàng chục trang web khác. Bạn chỉ cần đặt các tham số — và nhận dữ liệu có cấu trúc.

Loại proxy nào nên chọn cho ML-datasets

Việc chọn loại proxy là một trong những yếu tố quyết định thành công khi thu thập dữ liệu. Sai lầm ở đây có thể rất tốn kém: hoặc bạn sẽ bị chặn giữa chừng, hoặc bạn sẽ trả quá nhiều cho sức mạnh không cần thiết. Chúng ta sẽ phân tích ba loại chính.

Proxy cư trú — cho các trang web bảo vệ

Proxy cư trú là các địa chỉ IP của người dùng thực. Đối với các hệ thống chống bot, chúng không khác gì một khách truy cập bình thường. Điều này làm cho chúng trở nên lý tưởng cho việc phân tích các trang web có bảo vệ nghiêm ngặt: các chợ điện tử (Wildberries, Ozon), mạng xã hội, các trang tổng hợp tin tức.

Lợi thế chính cho các nhiệm vụ ML: có thể thu thập dữ liệu với sự gắn kết địa lý. Nếu bạn đang huấn luyện mô hình trên nội dung khu vực — chọn proxy từ khu vực cần thiết của Nga hoặc quốc gia khác. Điều này đặc biệt quan trọng cho các nhiệm vụ phân loại địa lý hoặc phân tích các phương ngữ khu vực.

Proxy di động — cho mạng xã hội và nền tảng di động

Proxy di động sử dụng IP của các nhà mạng di động (4G/5G). Chúng có mức độ tin cậy cao nhất đối với các nền tảng — vì một IP di động thực sự được sử dụng bởi hàng trăm người cùng một lúc (tất cả các thuê bao của một trạm phát sóng đều truy cập qua một IP). Điều này có nghĩa là ngay cả việc thu thập dữ liệu tích cực từ một IP di động cũng trông bình thường.

Proxy di động đặc biệt cần thiết nếu bạn đang thu thập dữ liệu từ VKontakte, TikTok hoặc Instagram — các nền tảng thường xuyên chặn các IP từ trung tâm dữ liệu.

Proxy trung tâm dữ liệu — cho các nguồn mở và tốc độ

Proxy trung tâm dữ liệu — nhanh và rẻ. Chúng không gắn liền với người dùng thực, vì vậy dễ bị các hệ thống bảo vệ nhận diện. Nhưng đối với nhiều nhiệm vụ ML, điều này là đủ: nếu bạn đang phân tích Wikipedia, các kho lưu trữ mở, GitHub, API công cộng hoặc các trang web không có bảo vệ nghiêm ngặt — proxy trung tâm dữ liệu sẽ hoạt động tốt và có giá thành thấp hơn nhiều.

Cách chọn loại proxy cho nhiệm vụ ML của bạn:

  • Chợ điện tử (Wildberries, Ozon, Avito): proxy cư trú với luân phiên
  • Mạng xã hội (VKontakte, Instagram, TikTok): proxy di động
  • Các trang tin tức, diễn đàn, Wikipedia: proxy trung tâm dữ liệu
  • Tìm kiếm Google, Yandex: proxy cư trú hoặc di động
  • Các kho lưu trữ mở, Common Crawl: proxy trung tâm dữ liệu

Kịch bản thực tiễn: văn bản, hình ảnh, giá cả, đánh giá

Chúng ta sẽ phân tích các kịch bản cụ thể cho việc thu thập dữ liệu cho các loại nhiệm vụ ML phổ biến — với các nguồn, công cụ và loại proxy cần thiết.

Kịch bản 1: Bộ dữ liệu đánh giá cho phân tích cảm xúc (NLP)

Nhiệm vụ: thu thập 50.000 đánh giá với điểm số từ Wildberries để huấn luyện mô hình phân loại cảm xúc.

Nguồn: Wildberries — đánh giá cho các sản phẩm với điểm số từ 1–5 sao (phân loại lý tưởng đã có sẵn).
Công cụ: Octoparse hoặc một script sẵn có trên Python với thư viện requests.
Proxy: Proxy cư trú với luân phiên — Wildberries thường xuyên chặn các IP từ trung tâm dữ liệu.
Tốc độ thu thập: 1 yêu cầu mỗi 3–5 giây với các khoảng dừng — 50.000 đánh giá trong 2–3 ngày.

Bạn nhận được: Tệp CSV với các cột: văn bản đánh giá, điểm số (1–5), danh mục sản phẩm, ngày. Đây là bộ dữ liệu sẵn sàng cho việc huấn luyện — phân loại đã được tích hợp trong dữ liệu.

Kịch bản 2: Bộ dữ liệu hình ảnh cho thị giác máy tính

Nhiệm vụ: thu thập 100.000 hình ảnh sản phẩm từ nhiều danh mục để huấn luyện mô hình phân loại.

Nguồn: Ozon, Yandex.Market — hình ảnh sản phẩm với các danh mục.
Công cụ: Apify (có các tác nhân sẵn có cho thương mại điện tử) hoặc ParseHub.
Proxy: Proxy cư trú với luân phiên địa lý tại Nga.
Quan trọng: Tải hình ảnh qua proxy, không tải trực tiếp — các máy chủ CDN cũng có thể chặn các tải xuống hàng loạt.

Bạn nhận được: Thư mục với hình ảnh được phân loại theo danh mục — cấu trúc mà ImageDataGenerator trong Keras hoặc DataLoader trong PyTorch có thể chấp nhận trực tiếp.

Kịch bản 3: Tập hợp văn bản cho mô hình ngôn ngữ

Nhiệm vụ: thu thập một tập hợp lớn các văn bản tiếng Nga để tinh chỉnh (fine-tuning) mô hình ngôn ngữ theo một chủ đề cụ thể — chẳng hạn như văn bản pháp lý hoặc các bài báo y tế.

Nguồn: Các diễn đàn chủ đề, các trang tin tức, Habr, các cổng thông tin chuyên nghiệp.
Công cụ: Scrapy Cloud hoặc Octoparse cho việc thu thập có cấu trúc.
Proxy: Proxy trung tâm dữ liệu với luân phiên — hầu hết các trang web văn bản không có bảo vệ nghiêm ngặt, và tốc độ quan trọng hơn tính ẩn danh.
Tốc độ: Với proxy trung tâm dữ liệu, bạn có thể thực hiện 50–100 yêu cầu mỗi phút và thu thập một triệu tài liệu trong vài ngày.

Kịch bản 4: Bộ dữ liệu vị trí tuyển dụng cho mô hình HR

Nhiệm vụ: thu thập 200.000 vị trí tuyển dụng từ hh.ru để huấn luyện mô hình gợi ý hoặc phân loại nghề nghiệp.

Nguồn: hh.ru — họ có API chính thức, nhưng có giới hạn. Đối với khối lượng lớn, cần phân tích.
Công cụ: Apify (có tác nhân cho hh.ru) hoặc Octoparse.
Proxy: Proxy cư trú — hh.ru được bảo vệ tốt và chặn các IP từ trung tâm dữ liệu.
Bạn nhận được: Dữ liệu có cấu trúc: tên vị trí, mô tả, lương, yêu cầu, khu vực, ngành nghề — một bộ dữ liệu tuyệt vời cho NLP và hệ thống gợi ý.

Cách tránh bị chặn khi thu thập dữ liệu hàng loạt

Ngay cả với proxy tốt, bạn vẫn có thể bị cấm nếu không tuân thủ các quy tắc cơ bản. Dưới đây là những phương pháp đã được kiểm chứng giúp thu thập dữ liệu ổn định và không bị mất mát.

Luân phiên IP và phiên

Quy tắc quan trọng nhất: không sử dụng một IP cho hàng ngàn yêu cầu. Thiết lập luân phiên sao cho mỗi 10–50 yêu cầu thì IP sẽ thay đổi. Hầu hết các công cụ (Octoparse, Apify, Scrapy) hỗ trợ điều này ngay từ đầu khi kết nối với pool proxy.

Thêm vào đó, hãy thay đổi cookie phiên cùng với IP — điều này giả lập một người dùng mới, chứ không chỉ là thay đổi địa chỉ.

Thời gian trễ hợp lý 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 — không phải là 2 giây cố định, mà là ngẫu nhiên từ 1 đến 5 giây. Khoảng thời gian cố định dễ dàng bị phát hiện như một mẫu bot. Ngẫu nhiên — giả lập hành vi của con người.

Đối với các trang web được bảo vệ đặc biệt, hãy thêm các khoảng dừng dài hơn: mỗi 100 yêu cầu hãy nghỉ 30–60 giây. Điều này làm giảm tốc độ, nhưng giảm đáng kể nguy cơ bị chặn.

Tiêu đề yêu cầu chính xác

Thiết lập User-Agent cho trình duyệt hiện tại (Chrome, Firefox phiên bản mới nhất). Thêm các tiêu đề HTTP tiêu chuẩn: Accept-Language, Accept-Encoding, Referer. Việc thiếu các tiêu đề này là dấu hiệu rõ ràng của bot đối với hầu hết các hệ thống bảo vệ.

Thu thập vào giờ không làm việc

Khởi động việc thu thập hàng loạt vào ban đêm (từ 2:00 đến 6:00 theo giờ Moscow). Trong khoảng thời gian này, lưu lượng truy cập trên các trang web là tối thiểu, các hệ thống chống bot ít hung hăng hơn, và các yêu cầu của bạn chiếm tỷ lệ lớn hơn trong tải — điều này giảm nghi ngờ, vì lưu lượng cạnh tranh ít hơn.

Xử lý lỗi và thử lại

Thiết lập xử lý tự động các mã phản hồi:

  • 429 (Quá nhiều yêu cầu) — tăng thời gian trễ, thay đổi IP, chờ 5–10 phút.
  • 403 (Bị cấm) — IP đã bị chặn, hãy chắc chắn thay đổi proxy.
  • 503 (Dịch vụ không khả dụng) — quá tải tạm thời của máy chủ, hãy thử lại sau 1–2 phút.
  • 200 với captcha — cần một proxy chất lượng hơn (proxy cư trú thay vì proxy trung tâm dữ liệu).

Sự phù hợp địa lý của proxy và trang web

Sử dụng proxy từ cùng một quốc gia với trang web mục tiêu. Nếu bạn đang phân tích Wildberries — hãy chọn các IP của Nga. Nếu bạn đang thu thập dữ liệu từ một trang web của Đức — cần các proxy của Đức. Sự không phù hợp về địa lý là một trong những nguyên nhân phổ biến nhất dẫn đến việc bị chặn.

Danh sách kiểm tra: thiết lập quy trình thu thập dữ liệu cho ML

Sử dụng danh sách kiểm tra này trước khi khởi động bất kỳ việc thu thập dữ liệu quy mô lớn nào cho bộ dữ liệu:

📋 Chuẩn bị

  • ☐ Kiểm tra sự tồn tại của bộ dữ liệu sẵn có trên Kaggle / Hugging Face
  • ☐ Nghiên cứu robots.txt của trang web mục tiêu
  • ☐ Xác định khối lượng dữ liệu và cấu trúc bộ dữ liệu
  • ☐ Chọn công cụ phân tích (Octoparse, Apify, Scrapy)
  • ☐ Chọn loại proxy cho nhiệm vụ (proxy cư trú / di động / trung tâm dữ liệu)

⚙️ Thiết lập

  • ☐ Kết nối với pool proxy với luân phiên IP
  • ☐ Thiết lập User-Agent (Chrome/Firefox hiện tại)
  • ☐ Thêm các tiêu đề HTTP tiêu chuẩn
  • ☐ Thiết lập các khoảng dừng ngẫu nhiên (1–5 giây)
  • ☐ Thiết lập xử lý lỗi (429, 403, 503)
  • ☐ Chỉ định định dạng xuất dữ liệu (CSV, JSON, JSONL)

🧪 Kiểm tra

  • ☐ Khởi động thử nghiệm với 100–500 bản ghi
  • ☐ Kiểm tra chất lượng và độ đầy đủ của dữ liệu
  • ☐ Đảm bảo không có chặn trong khối lượng thử nghiệm
  • ☐ Kiểm tra tốc độ thu thập và tính toán thời gian cho toàn bộ bộ dữ liệu

🚀 Khởi động và giám sát

  • ☐ Khởi động vào ban đêm (02:00–06:00 MSK)
  • ☐ Thiết lập thông báo về lỗi
  • ☐ Thỉnh thoảng kiểm tra chất lượng dữ liệu thu thập
  • ☐ Lưu trữ các kết quả tạm thời (checkpoint mỗi 10.000 bản ghi)

🧹 Xử lý sau

  • ☐ Xóa các bản sao
  • ☐ Làm sạch các thẻ HTML và ký tự đặc biệt trong văn bản
  • ☐ Kiểm tra sự cân bằng của các lớp (đối với các nhiệm vụ phân loại)
  • ☐ Chia thành các tập train/validation/test
  • ☐ Lưu trữ ở định dạng tương thích với framework ML của bạn

Kết luận

Việc thu thập dữ liệu cho ML-datasets không phải là một nhiệm vụ đơn lẻ, mà là một quy trình hệ thống. Những kết luận chính từ bài viết này: việc chọn proxy đúng quyết định xem bạn có đến đích hay sẽ bị mắc kẹt trong các chặn. Proxy cư trú cần thiết cho các chợ điện tử và tổng hợp, proxy di động cho mạng xã hội, và proxy trung tâm dữ liệu cho các nguồn văn bản mở. Các công cụ như Octoparse và Apify cho phép bạn xây dựng quy trình mà không cần viết mã. Và việc tuân thủ các quy tắc cơ bản (luân phiên IP, thời gian trễ ngẫu nhiên, tiêu đề chính xác) cho phép bạn thu thập hàng trăm ngàn bản ghi mà không bị mất mát.

Nếu bạn dự định thu thập dữ liệu từ các chợ điện tử, trang tin tức hoặc các cổng thông tin chủ đề để huấn luyện các mô hình ML, chúng tôi khuyên bạn nên bắt đầu với proxy cư trú — chúng đảm bảo mức độ tin cậy tối đa từ các hệ thống bảo vệ và nguy cơ bị chặn tối thiểu ngay cả khi thu thập dữ liệu quy mô lớn.

```