CAPSOLVER
Blog
Apa itu puppeteer dan cara menggunakannya dalam web scraping | Panduan Lengkap 2024

Apa itu puppeteer dan cara menggunakannya dalam web scraping | Panduan Lengkap 2026

Logo of CapSolver

Emma Foster

Machine Learning Engineer

03-Dec-2025

Pengambilan data web telah menjadi keterampilan penting bagi siapa pun yang terlibat dalam ekstraksi data dari web. Baik Anda seorang pengembang, ilmuwan data, atau penggemar yang ingin mengumpulkan informasi dari situs web, Puppeteer adalah salah satu alat paling kuat yang tersedia. Panduan lengkap ini akan membahas apa itu Puppeteer dan cara menggunakannya secara efektif dalam pengambilan data web.

Pengenalan Puppeteer

Puppeteer adalah pustaka Node yang menyediakan API tingkat tinggi untuk mengontrol Chrome atau Chromium melalui Protokol DevTools. Puppeteer dikembangkan oleh tim Google Chrome dan menawarkan kemampuan kepada pengembang untuk melakukan berbagai tugas browser seperti menghasilkan screenshot, mengambil data dari situs web, dan yang paling penting, pengambilan data web. Puppeteer sangat populer karena kemampuan penjelajahan tanpa antarmuka grafis, yang berarti dapat berjalan tanpa antarmuka grafis, membuatnya ideal untuk tugas otomatis.

Tukarkan Kode Bonus CapSolver

Meningkatkan anggaran otomatisasi Anda secara instan!
Gunakan kode bonus CAPN saat menambahkan dana ke akun CapSolver untuk mendapatkan bonus tambahan 5% pada setiap pengisian ulang — tanpa batas.
Tukarkan sekarang di CapSolver Dashboard
.

Mengapa Menggunakan Puppeteer untuk Pengambilan Data Web?

Axios dan Cheerio adalah pilihan yang baik untuk pengambilan data JavaScript, tetapi memiliki keterbatasan: menangani konten dinamis dan menghindari mekanisme anti-pengambilan data.

Sebagai browser tanpa antarmuka grafis, Puppeteer unggul dalam mengambil konten dinamis. Hal ini memuat halaman target secara penuh, menjalankan JavaScript, dan bahkan dapat memicu permintaan XHR untuk mengambil data tambahan. Ini adalah sesuatu yang tidak dapat dicapai oleh pengambil data statis, terutama dengan Aplikasi Halaman Tunggal (SPAs) di mana HTML awal tidak memiliki data yang signifikan.

Apa lagi yang bisa dilakukan Puppeteer? Itu dapat merender gambar, mengambil screenshot, dan memiliki ekstensi untuk menyelesaikan berbagai captcha seperti reCAPTCHA, captcha, captcha. Misalnya, Anda dapat memprogram skrip Anda untuk menelusuri halaman, mengambil screenshot pada interval tertentu, dan menganalisis gambar tersebut untuk memperoleh wawasan kompetitif. Kemungkinannya hampir tak terbatas!

Penggunaan Sederhana Puppeteer

Kami sebelumnya menyelesaikan bagian pertama ScrapingClub menggunakan Selenium dan Python. Sekarang, mari kita gunakan Puppeteer untuk menyelesaikan bagian kedua

Sebelum memulai, pastikan Puppeteer terinstal di mesin lokal Anda. Jika tidak, Anda dapat menginstalnya menggunakan perintah berikut:

bash Copy
npm i puppeteer # Mengunduh Chrome yang kompatibel selama instalasi.
npm i puppeteer-core # Alternatifnya, instal sebagai pustaka, tanpa mengunduh Chrome.

Mengakses Halaman Web

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Berhenti selama 5 detik
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

Metode puppeteer.launch digunakan untuk menjalankan instance Puppeteer baru dan dapat menerima objek konfigurasi dengan berbagai opsi. Opsi yang paling umum adalah headless, yang menentukan apakah browser berjalan dalam mode headless. Jika Anda tidak menentukan parameter ini, itu akan default ke true. Opsi konfigurasi lain yang umum adalah sebagai berikut:

Parameter Tipe Nilai Default Deskripsi Contoh
args string[] Array argumen baris perintah yang diteruskan saat menjalankan browser args: ['--no-sandbox', '--disable-setuid-sandbox']
debuggingPort number Menentukan nomor port debugging yang digunakan debuggingPort: 8888
defaultViewport dict {width: 800, height: 600} Mengatur ukuran viewport default defaultViewport: {width: 1920, height: 1080}
devtools boolean false Apakah akan secara otomatis membuka DevTools devtools: true
executablePath string Menentukan jalur ke eksekusi browser executablePath: '/path/to/chrome'
headless boolean atau 'shell' true Apakah akan menjalankan browser dalam mode headless headless: false
userDataDir string Menentukan jalur ke direktori data pengguna userDataDir: '/path/to/user/data'
timeout number 30000 Timeout dalam milidetik untuk menunggu browser dimulai timeout: 60000
ignoreHTTPSErrors boolean false Apakah akan mengabaikan kesalahan HTTPS ignoreHTTPSErrors: true

Mengatur Ukuran Jendela

Untuk mencapai pengalaman penjelajahan terbaik, kita perlu menyesuaikan dua parameter: ukuran viewport dan ukuran jendela browser. Kode berikut:

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--window-size=1920,1080']
    });
    const page = await browser.newPage();
    await page.setViewport({width: 1920, height: 1080});
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Berhenti selama 5 detik
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

Menarik Data

Dalam Puppeteer, terdapat berbagai metode untuk menarik data.

  1. Menggunakan Metode evaluate

    Metode evaluate mengeksekusi kode JavaScript dalam konteks browser untuk menarik data yang diperlukan.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.evaluate(() => {
            const image = document.querySelector('.card-img-top').src;
            const title = document.querySelector('.card-title').innerText;
            const price = document.querySelector('.card-price').innerText;
            const description = document.querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nama produk:', data.title);
        console.log('Harga produk:', data.price);
        console.log('Gambar produk:', data.image);
        console.log('Deskripsi produk:', data.description);
    
        // Berhenti selama 5 detik
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  2. Menggunakan Metode $eval

    Metode $eval memilih satu elemen dan menarik isinya.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const title = await page.$eval('.card-title', el => el.innerText);
        const price = await page.$eval('.card-price', el => el.innerText);
        const image = await page.$eval('.card-img-top', el => el.src);
        const description = await page.$eval('.card-description', el => el.innerText);
    
        console.log('Nama produk:', title);
        console.log('Harga produk:', price);
        console.log('Gambar produk:', image);
        console.log('Deskripsi produk:', description);
    
        // Berhenti selama 5 detik
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  3. Menggunakan Metode $$eval

    Metode $$eval memilih beberapa elemen sekaligus dan menarik isinya.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.$$eval('.my-8.w-full.rounded.border > *', elements => {
            const image = elements[0].querySelector('img').src;
            const title = elements[1].querySelector('.card-title').innerText;
            const price = elements[1].querySelector('.card-price').innerText;
            const description = elements[1].querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nama produk:', data.title);
        console.log('Harga produk:', data.price);
        console.log('Gambar produk:', data.image);
        console.log('Deskripsi produk:', data.description);
    
        // Berhenti selama 5 detik
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  4. Menggunakan Metode page.$ dan evaluate

    Metode page.$ memilih elemen, dan metode evaluate mengeksekusi kode JavaScript dalam konteks browser untuk menarik data.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const imageElement = await page.$('.card-img-top');
        const titleElement = await page.$('.card-title');
        const priceElement = await page.$('.card-price');
        const descriptionElement = await page.$('.card-description');
        const image = await page.evaluate(el => el.src, imageElement);
        const title = await page.evaluate(el => el.innerText, titleElement);
        const price = await page.evaluate(el => el.innerText, priceElement);
        const description = await page.evaluate(el => el.innerText, descriptionElement);
    
        console.log('Nama produk:', title);
        console.log('Harga produk:', price);
        console.log('Gambar produk:', image);
        console.log('Deskripsi produk:', description);
    
        // Berhenti selama 5 detik
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();

Mengatasi Perlindungan Anti-Pengambilan Data

Menyelesaikan latihan ScrapingClub relatif sederhana. Namun, dalam skenario pengambilan data dunia nyata, mendapatkan data tidak selalu begitu mudah. Beberapa situs web menggunakan teknologi anti-pengambilan data yang mungkin mendeteksi skrip Anda sebagai bot dan memblokirnya. Situasi yang paling umum melibatkan tantangan CAPTCHA seperti captcha, captcha, recaptcha, captcha, dan captcha.

Untuk menyelesaikan tantangan CAPTCHA ini, diperlukan pengalaman luas dalam machine learning, reverse engineering, dan tindakan pencegahan fingerprint browser, yang memakan waktu yang signifikan.

Untungnya, Anda tidak perlu lagi menangani semua pekerjaan ini sendirian. CapSolver menyediakan solusi komprehensif yang membantu Anda menyelesaikan semua tantangan dengan mudah. CapSolver menawarkan ekstensi browser yang memungkinkan Anda menyelesaikan tantangan CAPTCHA secara otomatis saat menggunakan Puppeteer untuk pengambilan data. Selain itu, menyediakan metode API untuk menyelesaikan CAPTCHA dan mendapatkan token. Semua ini dapat dilakukan dalam beberapa detik. Lihat dokumen ini dokumen untuk mengetahui bagaimana menyelesaikan berbagai tantangan CAPTCHA yang Anda temui!

Kesimpulan

Pengambilan data web adalah keterampilan yang tak ternilai harganya bagi siapa pun yang terlibat dalam ekstraksi data web, dan Puppeteer, sebagai alat dengan API yang canggih dan fitur kuat, adalah salah satu pilihan terbaik untuk mencapai tujuan ini. Kemampuannya dalam menangani konten dinamis dan menyelesaikan mekanisme anti-pengambilan data membuatnya menonjol dari alat pengambilan data lainnya.

Dalam panduan ini, kita menjelajahi apa itu Puppeteer, keunggulannya dalam pengambilan data web, dan cara mengatur serta menggunakannya secara efektif. Kita menunjukkan dengan contoh bagaimana mengakses halaman web, menyetel ukuran viewport, dan menarik data menggunakan berbagai metode. Selain itu, kita membahas tantangan yang ditimbulkan oleh teknologi anti-capture dan bagaimana CapSolver menyediakan solusi kuat untuk tantangan CAPTCHA.

FAQ

1. Apa yang utamanya digunakan Puppeteer dalam pengambilan data web?

Puppeteer digunakan untuk mengontrol browser Chrome/Chromium sebenarnya, memungkinkannya memuat JavaScript dinamis, merender halaman SPA, berinteraksi dengan elemen, dan menarik data yang tidak dapat diakses oleh penejelajah HTTP biasa.


2. Apakah Puppeteer dapat menangani tantangan CAPTCHA di situs web?

Puppeteer sendiri tidak dapat melewati CAPTCHA, tetapi ketika dikombinasikan dengan ekstensi browser CapSolver atau API, itu dapat secara otomatis menyelesaikan tantangan reCAPTCHA, hCaptcha, FunCAPTCHA, dan verifikasi lainnya selama tugas pengambilan data.


3. Apakah Puppeteer perlu dijalankan dengan jendela browser yang terlihat?

Tidak. Puppeteer mendukung mode headless, di mana Chrome berjalan tanpa GUI. Mode ini lebih cepat dan ideal untuk otomatisasi. Anda juga dapat menjalankannya dalam mode non-headless untuk debugging atau pemantauan visual.

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut

Data sebagai Layanan (DaaS): Apa Itu dan Mengapa Pentingnya pada 2026
Data sebagai Layanan (DaaS): Apa Itu dan Mengapa Penting pada 2026

Pahami Data sebagai Layanan (DaaS) pada 2026. Eksplor manfaatnya, kasus penggunaan, dan bagaimana DaaS mengubah bisnis dengan wawasan real-time dan skalabilitas.

web scraping
Logo of CapSolver

Anh Tuan

12-Feb-2026

RoxyBrowser dengan Integrasi CapSolver
Cara Menyelesaikan Captcha di RoxyBrowser dengan Integrasi CapSolver

Mengintegrasikan CapSolver dengan RoxyBrowser untuk mengotomatisasi tugas browser dan menghindari reCAPTCHA, Turnstile, dan CAPTCHA lainnya.

web scraping
Logo of CapSolver

Ethan Collins

04-Feb-2026

Easyspider CapSolver Captcha Integrasi
Cara Menyelesaikan Captcha di EasySpider dengan Integrasi CapSolver

EasySpider adalah alat pengambilan data web dan otomatisasi browser visual, tanpa kode, dan ketika dikombinasikan dengan CapSolver, dapat menyelesaikan CAPTCHA seperti reCAPTCHA v2 dan Cloudflare Turnstile secara andal, memungkinkan pengambilan data otomatis yang mulus di berbagai situs web.

web scraping
Logo of CapSolver

Emma Foster

04-Feb-2026

Relevance AI dengan CapSolver
Cara menyelesaikan reCAPTCHA v2 di Relevance AI dengan Integrasi CapSolver

Kembangkan alat Relevance AI untuk menyelesaikan reCAPTCHA v2 menggunakan CapSolver. Otomatisasi pengajuan formulir melalui API tanpa otomatisasi browser.

web scraping
Logo of CapSolver

Ethan Collins

03-Feb-2026

Larangan IP pada 2026: Bagaimana Cara Kerjanya dan Cara Praktis untuk Menghindarinya
Larangan IP pada 2026: Bagaimana Cara Kerjanya dan Cara Praktis untuk Mengelaknya

Pelajari cara menghindari pembatasan IP pada 2026 dengan panduan lengkap kami. Temukan teknik pemblokiran IP modern dan solusi praktis seperti proxy residensial dan solver CAPTCHA.

web scraping
Logo of CapSolver

Emma Foster

26-Jan-2026

Cara Mengatasi Kesalahan Umum dalam Web Scraping di Tahun 2026
Cara Mengatasi Kesalahan Web Scraping Umum pada 2026

Menguasai perbaikan berbagai kesalahan web scraper seperti 400, 401, 402, 403, 429, 5xx, dan Cloudflare 1001 pada 2026. Pelajari strategi lanjutan untuk rotasi IP, header, dan pembatasan laju yang adaptif dengan CapSolver.

web scraping
Logo of CapSolver

Sora Fujimoto

26-Jan-2026