Apakah Anda seorang pengembang web, analis data, atau pemilik bisnis e-commerce yang ingin memantau pergerakan harga pasar? Mengambil data secara manual dari marketplace sebesar Shopee tentu sangat melelahkan dan tidak efisien. Di sinilah pentingnya menguasai tutorial scraping shopee dengan node js puppeteer untuk membantu Anda mengotomatisasi proses pengambilan informasi produk secara cepat dan akurat.
Dalam artikel mendalam ini, kita akan membahas secara tuntas bagaimana membangun sebuah bot scraper yang handal menggunakan Node.js dan library Puppeteer. Tidak hanya sekadar mengambil teks, kita juga akan mempelajari cara menangani konten dinamis (JavaScript-heavy), melewati sistem deteksi bot, hingga menyimpan data ke dalam format yang siap digunakan seperti JSON atau CSV. Mari kita mulai perjalanan teknis ini untuk meningkatkan efisiensi riset pasar Anda.
- Apa itu Puppeteer dan Mengapa Memilih Node.js?
- Persiapan Lingkungan dan Instalasi
- Membangun Struktur Dasar Bot Scraper
- Menangani Lazy Loading dan Scroll Otomatis
- Memahami Selektor Elemen di Shopee
- Proses Ekstraksi Data Produk Secara Detail
- Strategi Anti-Blokir dan Penggunaan Stealth Plugin
- Menyimpan Hasil Scraping ke JSON/CSV
- Etika dan Legalitas Web Scraping
- Kesimpulan dan Langkah Selanjutnya
Apa itu Puppeteer dan Mengapa Memilih Node.js?
Sebelum masuk ke teknis tutorial scraping shopee dengan node js puppeteer, kita perlu memahami mengapa kombinasi teknologi ini sangat populer di kalangan web scraper profesional. Node.js menawarkan lingkungan runtime yang non-blocking dan asynchronous, yang sangat ideal untuk menangani banyak permintaan jaringan sekaligus.
Puppeteer sendiri adalah library Node.js yang menyediakan API tingkat tinggi untuk mengontrol Chrome atau Chromium melalui Protokol DevTools. Berbeda dengan library scraping tradisional seperti Cheerio yang hanya membaca HTML statis, Puppeteer adalah headless browser. Ini berarti Puppeteer dapat merender JavaScript, mengklik tombol, mengisi formulir, dan berperilaku layaknya pengguna manusia sungguhan.
Shopee adalah platform yang sangat bergantung pada JavaScript (Single Page Application). Jika Anda menggunakan scraper biasa, Anda mungkin hanya akan mendapatkan halaman kosong atau layar loading. Dengan Puppeteer, Anda bisa memastikan semua elemen produk muncul sepenuhnya sebelum data diambil.
Persiapan Lingkungan dan Instalasi
Langkah pertama dalam tutorial scraping shopee dengan node js puppeteer adalah menyiapkan folder proyek dan menginstal dependensi yang diperlukan. Pastikan Anda sudah menginstal Node.js versi terbaru di komputer Anda.
- Buka terminal atau command prompt Anda.
- Buat folder baru:
mkdir shopee-scraperdan masuk ke dalamnya:cd shopee-scraper. - Inisialisasi proyek Node.js:
npm init -y. - Instal Puppeteer:
npm install puppeteer.
Selain Puppeteer, saya sangat merekomendasikan instalasi puppeteer-extra dan puppeteer-extra-plugin-stealth. Plugin ini sangat krusial untuk menghindari deteksi bot oleh sistem keamanan Shopee yang cukup ketat.
npm install puppeteer-extra puppeteer-extra-plugin-stealth
Membangun Struktur Dasar Bot Scraper
Sekarang, mari kita buat file utama bernama index.js. Di sini kita akan menuliskan logika dasar untuk membuka browser dan menavigasi ke halaman pencarian Shopee. Perhatikan kode di bawah ini:
Contoh Kode Dasar:
const puppeteer = require(‘puppeteer-extra’);
const StealthPlugin = require(‘puppeteer-extra-plugin-stealth’);
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto(‘https://shopee.co.id/search?keyword=laptop’);
// Logika selanjutnya di sini…
})();
Dalam tutorial scraping shopee dengan node js puppeteer ini, kita menggunakan mode headless: false agar kita bisa melihat proses yang terjadi di layar. Ini sangat membantu saat proses debugging untuk memastikan halaman termuat dengan benar.
Menangani Lazy Loading dan Scroll Otomatis
Salah satu tantangan terbesar saat melakukan scraping di Shopee adalah fitur lazy loading. Gambar dan informasi produk hanya akan dimuat ketika pengguna melakukan scroll ke bawah. Jika Anda langsung mengambil data saat halaman baru terbuka, Anda hanya akan mendapatkan sedikit produk.
Untuk mengatasi hal ini, kita perlu membuat fungsi auto-scroll. Fungsi ini akan memerintahkan browser untuk menggulir halaman ke bawah secara perlahan hingga mencapai dasar halaman, memicu semua konten untuk dimuat.
- Gunakan
window.scrollBy(0, distance)dalam interval waktu tertentu. - Tunggu beberapa milidetik setelah setiap scroll agar server Shopee tidak mencurigai aktivitas bot yang terlalu cepat.
- Pastikan tinggi dokumen (scrollHeight) sudah tercapai sepenuhnya sebelum memulai ekstraksi data.
Memahami Selektor Elemen di Shopee
Shopee sering memperbarui struktur HTML dan nama class mereka (seringkali menggunakan class yang diacak atau di-minify). Oleh karena itu, dalam tutorial scraping shopee dengan node js puppeteer, sangat penting untuk belajar cara mengidentifikasi selektor yang stabil.
Gunakan Chrome DevTools (F12) untuk menginspeksi elemen produk. Alih-alih mengandalkan class CSS yang rumit seperti .shopee-search-item-result__item, cobalah mencari pola pada atribut data atau struktur hierarki HTML. Misalnya, setiap kotak produk biasanya dibungkus dalam tag div tertentu yang berada di dalam grid utama.
Tips Memilih Selektor:
- Cari elemen yang memiliki atribut
data-sqe="item". - Gunakan selektor CSS yang lebih umum jika class dinamis berubah.
- Selalu uji selektor Anda di konsol browser sebelum memasukkannya ke dalam kode Node.js.
Proses Ekstraksi Data Produk Secara Detail
Setelah halaman tergulir sepenuhnya, saatnya mengambil data. Kita akan menggunakan fungsi page.evaluate(). Fungsi ini memungkinkan kita menjalankan JavaScript di dalam konteks halaman web dan mengembalikan hasilnya ke aplikasi Node.js kita.
Beberapa data penting yang biasanya diambil meliputi:
- Nama Produk: Biasanya berada di dalam tag
divdengan properti teks tertentu. - Harga: Perlu diperhatikan bahwa harga terkadang dipisahkan antara simbol mata uang dan nominalnya.
- Lokasi Penjual: Memberikan informasi asal pengiriman barang.
- Jumlah Terjual: Sangat berguna untuk analisis tren pasar.
- Link Produk: URL lengkap menuju halaman detail produk.
Berikut adalah logika ekstraksi yang bisa Anda terapkan:
const products = await page.evaluate(() => {
const items = Array.from(document.querySelectorAll(‘[data-sqe=”item”]’));
return items.map(item => ({
title: item.querySelector(‘.ie3A_2’)?.innerText,
price: item.querySelector(‘.vU6_sL’)?.innerText,
link: item.querySelector(‘a’)?.href
}));
});
Strategi Anti-Blokir dan Penggunaan Stealth Plugin
Shopee memiliki sistem keamanan tingkat tinggi untuk mencegah bot. Jika Anda melakukan permintaan terlalu sering dari IP yang sama, Anda akan segera menghadapi tantangan CAPTCHA atau pemblokiran IP sementara. Dalam tutorial scraping shopee dengan node js puppeteer ini, perlindungan adalah prioritas utama.
1. Gunakan User-Agent Random: Selalu ganti User-Agent browser Anda agar terlihat seperti perangkat yang berbeda-beda (Mobile, Desktop, Mac, Windows).
2. Implementasi Jeda (Delays): Jangan biarkan bot Anda bekerja terlalu cepat. Gunakan fungsi setTimeout atau utility waitForTimeout untuk memberikan jeda manusiawi antar aksi.
3. Penggunaan Proxy: Jika Anda melakukan scraping dalam skala besar, gunakan layanan proxy perumahan (residential proxy) agar alamat IP Anda selalu berganti.
4. Puppeteer Stealth: Seperti yang disebutkan sebelumnya, plugin ini secara otomatis menyembunyikan tanda-tanda bahwa browser dikendalikan oleh script (seperti variabel navigator.webdriver).
Menyimpan Hasil Scraping ke JSON/CSV
Data yang sudah diekstraksi tidak akan berguna jika tidak disimpan dengan rapi. Node.js memiliki modul bawaan bernama fs (File System) yang memudahkan kita menulis data ke dalam file.
Untuk menyimpan ke JSON:
const fs = require(‘fs’);
fs.writeFileSync(‘hasil_shopee.json’, JSON.stringify(products, null, 2));
Jika Anda lebih suka format CSV agar bisa dibuka di Excel, Anda bisa menggunakan library tambahan seperti json2csv. Format CSV sangat disukai oleh tim pemasaran dan analis bisnis karena kemudahannya untuk diolah lebih lanjut menggunakan rumus-rumus spreadsheet.
Etika dan Legalitas Web Scraping
Sebagai bagian dari tutorial scraping shopee dengan node js puppeteer, kita harus membahas aspek etika. Web scraping berada di area abu-abu secara legal, namun ada prinsip-prinsip yang harus dipatuhi:
- Cek Robots.txt: Selalu lihat kebijakan
/robots.txtdari situs target. - Jangan Membebani Server: Melakukan ribuan request dalam satu detik bisa dianggap sebagai serangan DDoS. Lakukan scraping secara bertanggung jawab.
- Data Pribadi: Hindari mengambil data sensitif atau data pribadi pengguna (PII) tanpa izin.
- Tujuan Penggunaan: Pastikan data digunakan untuk analisis internal dan bukan untuk didistribusikan ulang secara ilegal yang merugikan pemilik platform.
Kesimpulan dan Langkah Selanjutnya
Menguasai tutorial scraping shopee dengan node js puppeteer memberikan Anda keunggulan kompetitif dalam pengumpulan data. Kita telah mempelajari cara setup, menangani konten dinamis, hingga strategi menghindari blokir. Dengan alat ini, data marketplace yang luas kini berada di ujung jari Anda.
Langkah selanjutnya bagi Anda adalah mencoba mengimplementasikan fitur paginasi—bagaimana bot berpindah dari halaman 1 ke halaman 2 secara otomatis. Selain itu, Anda bisa mencoba mengintegrasikan bot ini dengan database seperti MongoDB atau PostgreSQL untuk penyimpanan jangka panjang.
Ingatlah bahwa dunia web scraping selalu berubah seiring dengan pembaruan sistem keamanan website. Teruslah bereksperimen dan perbarui script Anda secara berkala agar tetap berfungsi dengan optimal.