โ† Kembali ke blog

Pengumpulan Data untuk Dataset Machine Learning: Cara Mengambil Data dari Ribuan Halaman Tanpa Pemblokiran dan CAPTCHA

Membahas cara mengumpulkan volume besar data untuk dataset ML tanpa larangan dan captcha โ€” proxy mana yang dipilih dan bagaimana membangun prosesnya.

๐Ÿ“…14 Maret 2026
```html

Kualitas model ML secara langsung bergantung pada kualitas dan volume data pelatihan. Namun, begitu Anda mulai mengumpulkan ribuan halaman โ€” situs mulai memblokir permintaan, menampilkan captcha, dan memblokir IP. Dalam artikel ini, kita akan membahas bagaimana membangun pipeline pengumpulan data yang andal untuk dataset: alat apa yang digunakan, bagaimana menghindari perlindungan, dan jenis proksi apa yang cocok untuk setiap tugas.

Mengapa situs memblokir pengumpulan data dan apa yang harus dilakukan

Ketika Anda menjalankan pengumpulan data otomatis, situs melihat bukan pengguna biasa, tetapi aliran permintaan dari satu alamat IP. Ini segera mengangkat bendera merah di sistem perlindungan โ€” Cloudflare, DataDome, PerimeterX, dan solusi anti-bot lainnya. Akibatnya: captcha, pemblokiran sementara, atau pemblokiran IP secara total.

Masalah ini sangat mendesak untuk proyek ML, karena dataset membutuhkan tidak hanya 100 halaman, tetapi puluhan ribu. Untuk melatih bahkan model klasifikasi teks yang sederhana, dibutuhkan setidaknya 5.000โ€“10.000 contoh. Untuk visi komputer โ€” ratusan ribu gambar. Mengumpulkan volume seperti itu dari satu IP secara fisik tidak mungkin.

Sistem perlindungan menganalisis parameter berikut:

  • Frekuensi permintaan โ€” lebih dari 10โ€“20 permintaan per menit dari satu IP sudah mencurigakan.
  • User-Agent dan header โ€” header standar dari parser mudah dikenali.
  • Ketiadaan cookie dan data sesi โ€” browser nyata selalu membawa riwayat.
  • Geolokasi IP โ€” IP dari pusat data di Belanda di situs berbahasa Rusia terlihat mencurigakan.
  • Pola perilaku โ€” manusia membaca halaman selama 30โ€“60 detik, bot โ€” 0,3 detik.

Solusinya adalah kombinasi proksi yang tepat, rotasi IP, dan simulasi perilaku pengguna nyata. Mari kita bahas setiap elemen lebih detail.

Dari mana data untuk ML-dataset berasal: sumber utama

Sebelum membahas alat, penting untuk memahami โ€” dari mana data untuk melatih model berasal. Sumber dibagi menjadi beberapa kategori, dan masing-masing memerlukan pendekatan tersendiri.

Dataset terbuka (tanpa pengambilan data)

Hal pertama yang perlu diperiksa adalah dataset terbuka yang sudah ada. Kaggle, Hugging Face Datasets, Google Dataset Search, UCI Machine Learning Repository memiliki ribuan kumpulan data siap pakai. Jika tugas Anda standar (klasifikasi teks, pengenalan objek, analisis sentimen), mungkin dataset sudah ada. Ini menghemat waktu kerja selama berminggu-minggu.

Pengambilan data web (memerlukan proksi)

Ketika data yang siap tidak ada atau tidak sesuai dengan spesifikasi Anda โ€” pengambilan data diperlukan. Tugas-tugas khas:

  • Mengumpulkan ulasan dari Wildberries, Ozon, Yandex.Market untuk analisis sentimen
  • Pengambilan data dari situs berita untuk melatih model bahasa
  • Mengumpulkan gambar produk untuk model visi komputer
  • Pengambilan data lowongan kerja dari hh.ru, SuperJob untuk model HR
  • Mengumpulkan data harga dari marketplace untuk model prediktif
  • Pengambilan data dari media sosial (VKontakte, Twitter/X) untuk tugas NLP

API platform (sebagian tertutup)

Beberapa platform menyediakan API resmi โ€” Twitter/X API, Reddit API, Google Places API. Masalahnya: mereka mahal, memiliki batasan, dan sering kali tidak memberikan volume data yang diperlukan secara gratis. Oleh karena itu, banyak tim ML menggabungkan API dengan pengambilan data.

Data sintetis

Pendekatan terpisah โ€” generasi data sintetis menggunakan GPT-4 atau LLM lainnya. Namun, untuk ini tetap diperlukan data nyata sebagai dasar (contoh few-shot). Oleh karena itu, pengambilan data tetap menjadi alat dasar untuk mengumpulkan data untuk sebagian besar proyek ML.

Alat untuk mengumpulkan data tanpa menulis kode

Kabar baiknya: untuk mengumpulkan data untuk ML-dataset tidak perlu menjadi pengembang. Ada alat no-code dan low-code yang sudah ada, yang dapat bekerja dengan proksi dan menghindari perlindungan dasar.

Parser no-code

Alat Untuk apa cocok Dukungan proksi Tingkat kesulitan
Octoparse Situs, tabel, paginasi โœ… Ya Rendah
ParseHub Situs dinamis (JS) โœ… Ya Rendah
Apify Aktor siap pakai untuk 100+ situs โœ… Terintegrasi Sedang
Bright Data IDE Situs terlindungi yang kompleks โœ… Terintegrasi Sedang
Scrapy Cloud Pengambilan data skala besar โœ… Melalui middleware Tinggi

Untuk sebagian besar tugas pengumpulan data ML, cukup menggunakan Octoparse atau Apify. Octoparse memungkinkan Anda mengatur parser secara visual dalam 20โ€“30 menit: Anda menunjukkan elemen di halaman, mengatur paginasi, memasukkan proksi โ€” dan memulai pengumpulan. Hasilnya diekspor dalam format CSV atau JSON, yang dapat langsung digunakan untuk pelatihan.

Apify sangat nyaman jika Anda perlu mengumpulkan data dari platform populer: mereka memiliki "aktor" siap pakai untuk Instagram, Twitter/X, Amazon, Google Maps, LinkedIn, dan puluhan situs lainnya. Anda hanya perlu menentukan parameter โ€” dan mendapatkan data terstruktur.

Jenis proksi apa yang dipilih untuk ML-dataset

Pemilihan jenis proksi adalah salah satu faktor kunci keberhasilan dalam pengumpulan data. Kesalahan di sini bisa sangat mahal: Anda bisa diblokir di tengah jalan, atau Anda membayar lebih untuk daya yang tidak diperlukan. Mari kita bahas tiga jenis utama.

Proksi residensial โ€” untuk situs terlindungi

Proksi residensial adalah alamat IP dari pengguna rumah nyata. Untuk sistem anti-bot, mereka tidak dapat dibedakan dari pengunjung biasa. Ini membuatnya ideal untuk pengambilan data dari situs dengan perlindungan serius: marketplace (Wildberries, Ozon), media sosial, agregator berita.

Keuntungan utama untuk tugas ML: Anda dapat mengumpulkan data dengan geolokasi. Jika Anda melatih model pada konten regional โ€” pilih proksi dari wilayah yang diperlukan di Rusia atau negara lain. Ini sangat penting untuk tugas klasifikasi geolokasi atau analisis dialek regional.

Proksi seluler โ€” untuk media sosial dan platform seluler

Proksi seluler menggunakan IP dari operator seluler (4G/5G). Mereka memiliki tingkat kepercayaan tertinggi di platform โ€” karena satu IP seluler benar-benar digunakan oleh ratusan orang secara bersamaan (semua pelanggan dari satu menara keluar melalui satu IP). Ini berarti bahwa bahkan pengumpulan data aktif dari IP seluler terlihat normal.

Proksi seluler sangat diperlukan jika Anda mengumpulkan data dari VKontakte, TikTok, atau Instagram โ€” platform yang agresif memblokir IP dari pusat data.

Proksi pusat data โ€” untuk sumber terbuka dan kecepatan

Proksi pusat data โ€” cepat dan murah. Mereka tidak terikat pada pengguna nyata, sehingga lebih mudah dikenali oleh sistem perlindungan. Namun, untuk banyak tugas ML, ini sudah cukup: jika Anda mengumpulkan data dari Wikipedia, arsip terbuka, GitHub, API publik, atau situs tanpa perlindungan serius โ€” proksi pusat data akan bekerja dengan baik dan jauh lebih murah.

Cara memilih jenis proksi untuk tugas ML Anda:

  • Marketplace (Wildberries, Ozon, Avito): proksi residensial dengan rotasi
  • Media sosial (VKontakte, Instagram, TikTok): proksi seluler
  • Situs berita, forum, Wikipedia: proksi pusat data
  • Google Search, Yandex: proksi residensial atau seluler
  • Arsip terbuka, Common Crawl: proksi pusat data

Skenario praktis: teks, gambar, harga, ulasan

Mari kita bahas skenario konkret pengumpulan data untuk jenis tugas ML yang populer โ€” dengan menunjukkan sumber, alat, dan jenis proksi yang diperlukan.

Skenario 1: Dataset ulasan untuk analisis sentimen (NLP)

Tugas: mengumpulkan 50.000 ulasan dengan penilaian dari Wildberries untuk melatih model klasifikasi sentimen.

Sumber: Wildberries โ€” ulasan untuk produk dengan penilaian 1โ€“5 bintang (penandaan ideal sudah ada).
Alat: Octoparse atau skrip siap pakai di Python dengan pustaka requests.
Proksi: Residensial dengan rotasi โ€” Wildberries aktif memblokir IP pusat data.
Kecepatan pengumpulan: 1 permintaan setiap 3โ€“5 detik dengan jeda โ€” 50.000 ulasan dalam 2โ€“3 hari.

Apa yang Anda dapatkan: File CSV dengan kolom: teks ulasan, penilaian (1โ€“5), kategori produk, tanggal. Ini adalah dataset siap pakai untuk pelatihan โ€” penandaan sudah terintegrasi dalam data.

Skenario 2: Dataset gambar untuk visi komputer

Tugas: mengumpulkan 100.000 gambar produk dari beberapa kategori untuk melatih model klasifikasi.

Sumber: Ozon, Yandex.Market โ€” foto produk dengan kategori.
Alat: Apify (ada aktor siap pakai untuk e-commerce) atau ParseHub.
Proksi: Proksi residensial dengan rotasi geografis di Rusia.
Penting: Unduh gambar melalui proksi, bukan langsung โ€” server CDN juga dapat memblokir unduhan massal.

Apa yang Anda dapatkan: Folder dengan gambar, dibagi berdasarkan kategori โ€” struktur yang langsung diterima oleh ImageDataGenerator di Keras atau DataLoader di PyTorch.

Skenario 3: Korpus teks untuk model bahasa

Tugas: mengumpulkan korpus besar teks berbahasa Rusia untuk fine-tuning model bahasa pada tema tertentu โ€” misalnya, teks hukum atau artikel medis.

Sumber: Forum tematik, situs berita, Habr, portal profesional.
Alat: Scrapy Cloud atau Octoparse untuk pengumpulan terstruktur.
Proksi: Proksi pusat data dengan rotasi โ€” sebagian besar situs teks tidak memiliki perlindungan yang ketat, dan kecepatan lebih penting daripada anonimitas.
Kecepatan: Dengan proksi pusat data, Anda dapat melakukan 50โ€“100 permintaan per menit dan mengumpulkan satu juta dokumen dalam beberapa hari.

Skenario 4: Dataset lowongan kerja untuk model HR

Tugas: mengumpulkan 200.000 lowongan dari hh.ru untuk melatih model rekomendasi atau klasifikasi profesi.

Sumber: hh.ru โ€” mereka memiliki API resmi, tetapi dengan batasan. Untuk volume besar, pengambilan data diperlukan.
Alat: Apify (ada aktor untuk hh.ru) atau Octoparse.
Proksi: Proksi residensial โ€” hh.ru terlindungi dengan baik dan memblokir IP pusat data.
Apa yang Anda dapatkan: Data terstruktur: nama lowongan, deskripsi, gaji, persyaratan, wilayah, industri โ€” dataset yang sangat baik untuk NLP dan sistem rekomendasi.

Cara menghindari pemblokiran saat mengumpulkan data secara massal

Bahkan dengan proksi yang baik, Anda bisa mendapatkan pemblokiran jika tidak mematuhi aturan dasar. Berikut adalah metode yang terbukti membantu mengumpulkan data secara stabil dan tanpa kerugian.

Rotasi IP dan sesi

Aturan terpenting: jangan gunakan satu IP untuk ribuan permintaan. Atur rotasi sehingga setiap 10โ€“50 permintaan IP berubah. Sebagian besar alat (Octoparse, Apify, Scrapy) mendukung ini secara default saat terhubung ke pool proksi.

Selain itu, ganti cookie sesi bersamaan dengan IP โ€” ini mensimulasikan pengguna baru, bukan hanya perubahan alamat.

Penundaan yang tepat antara permintaan

Tambahkan penundaan acak antara permintaan โ€” bukan 2 detik tetap, tetapi acak antara 1 hingga 5 detik. Interval tetap mudah terdeteksi sebagai pola bot. Acak โ€” mensimulasikan perilaku manusia.

Untuk situs yang sangat terlindungi, tambahkan jeda yang lebih lama: setiap 100 permintaan, lakukan jeda 30โ€“60 detik. Ini mengurangi kecepatan, tetapi secara radikal mengurangi risiko pemblokiran.

Header permintaan yang benar

Atur User-Agent ke browser terkini (Chrome, Firefox versi terbaru). Tambahkan header HTTP standar: Accept-Language, Accept-Encoding, Referer. Ketiadaan header ini adalah tanda jelas bot untuk sebagian besar sistem perlindungan.

Pengumpulan di waktu tidak sibuk

Jalankan pengumpulan massal di malam hari (dari 2:00 hingga 6:00 waktu Moskow). Pada waktu ini, lalu lintas di situs minimal, sistem anti-bot kurang agresif, dan permintaan Anda menjadi proporsi yang lebih besar dari beban โ€” yang secara paradoks mengurangi kecurigaan, karena lalu lintas pesaing lebih sedikit.

Pengolahan kesalahan dan percobaan ulang

Atur pengolahan otomatis untuk kode respons:

  • 429 (Terlalu Banyak Permintaan) โ€” tingkatkan penundaan, ganti IP, tunggu 5โ€“10 menit.
  • 403 (Dilarang) โ€” IP diblokir, pastikan untuk mengganti proksi.
  • 503 (Layanan Tidak Tersedia) โ€” kelebihan beban server sementara, coba lagi dalam 1โ€“2 menit.
  • 200 dengan captcha โ€” perlu proksi yang lebih berkualitas (residensial daripada pusat data).

Kesesuaian geografis proksi dan situs

Gunakan proksi dari negara yang sama dengan situs target. Jika Anda mengumpulkan data dari Wildberries โ€” pilih IP Rusia. Jika Anda mengumpulkan data dari situs Jerman โ€” Anda memerlukan proksi Jerman. Ketidaksesuaian geolokasi adalah salah satu pemicu pemblokiran yang paling umum.

Checklist: pengaturan pipeline pengumpulan data untuk ML

Gunakan checklist ini sebelum memulai pengumpulan data berskala besar untuk dataset:

๐Ÿ“‹ Persiapan

  • โ˜ Periksa ketersediaan dataset siap pakai di Kaggle / Hugging Face
  • โ˜ Pelajari robots.txt situs target
  • โ˜ Tentukan volume data dan struktur dataset
  • โ˜ Pilih alat pengambilan data (Octoparse, Apify, Scrapy)
  • โ˜ Pilih jenis proksi untuk tugas (residensial / seluler / pusat data)

โš™๏ธ Pengaturan

  • โ˜ Hubungkan pool proksi dengan rotasi IP
  • โ˜ Atur User-Agent (Chrome/Firefox terbaru)
  • โ˜ Tambahkan header HTTP standar
  • โ˜ Atur penundaan acak (1โ€“5 detik)
  • โ˜ Atur pengolahan kesalahan (429, 403, 503)
  • โ˜ Tentukan format ekspor data (CSV, JSON, JSONL)

๐Ÿงช Pengujian

  • โ˜ Jalankan tes pada 100โ€“500 catatan
  • โ˜ Periksa kualitas dan kelengkapan data
  • โ˜ Pastikan tidak ada pemblokiran pada volume tes
  • โ˜ Periksa kecepatan pengumpulan dan hitung waktu untuk dataset penuh

๐Ÿš€ Peluncuran dan pemantauan

  • โ˜ Jalankan di malam hari (02:00โ€“06:00 MSK)
  • โ˜ Atur pemberitahuan kesalahan
  • โ˜ Secara berkala periksa kualitas data yang dikumpulkan
  • โ˜ Simpan hasil sementara (checkpoint setiap 10.000 catatan)

๐Ÿงน Pascaproses

  • โ˜ Hapus duplikat
  • โ˜ Bersihkan tag HTML dan simbol khusus dari teks
  • โ˜ Periksa keseimbangan kelas (untuk tugas klasifikasi)
  • โ˜ Bagi menjadi set train/validation/test
  • โ˜ Simpan dalam format yang kompatibel dengan framework ML Anda

Kesimpulan

Pengumpulan data untuk ML-dataset bukanlah tugas sekali jalan, tetapi proses sistematis. Kesimpulan utama dari artikel ini: pemilihan proksi yang tepat menentukan apakah Anda akan mencapai akhir atau terjebak pada pemblokiran. Proksi residensial diperlukan untuk marketplace dan agregator yang terlindungi, proksi seluler untuk media sosial, dan proksi pusat data untuk sumber teks terbuka. Alat seperti Octoparse dan Apify memungkinkan Anda membangun pipeline tanpa menulis kode. Dan mematuhi aturan dasar (rotasi IP, penundaan acak, header yang benar) memungkinkan Anda mengumpulkan ratusan ribu catatan tanpa kerugian.

Jika Anda berencana untuk mengumpulkan data dari marketplace, situs berita, atau portal tematik untuk melatih model ML, kami merekomendasikan untuk memulai dengan proksi residensial โ€” mereka memberikan tingkat kepercayaan maksimum dari sistem perlindungan dan risiko pemblokiran minimal bahkan saat mengumpulkan data secara massal.

```