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

Penyedotan Web dengan Selenium dan Python
Mengambil Data Web dengan Selenium dan Python | Menyelesaikan Captcha Saat Mengambil Data Web

Dalam artikel ini, Anda akan mengenal pengambilan data web menggunakan Selenium dan Python, serta mempelajari cara menyelesaikan Captcha yang terkait dalam proses untuk ekstraksi data yang efisien.

web scraping
Logo of CapSolver

Emma Foster

04-Dec-2025

Web Scraping dalam Golang dengan Colly
Web Scraping di Golang dengan Colly

Pada blog ini, kita akan menjelajahi dunia web scraping menggunakan Golang dengan pustaka Colly. Panduan ini dimulai dengan membantu Anda mengatur proyek Golang dan menginstal paket Colly. Kemudian kita akan membimbing Anda melalui pembuatan pengumpul dasar untuk mengekstrak tautan dari halaman Wikipedia, menunjukkan kemudahan penggunaan dan fitur canggih Colly.

web scraping
Logo of CapSolver

Nikolai Smirnov

04-Dec-2025

Apa Itu Web Scraping
Apa Itu Web Scraping | Contoh Penggunaan dan Masalah

Pelajari tentang web scraping: pelajari manfaatnya, atasi tantangan dengan mudah, dan tingkatkan bisnis Anda dengan CapSolver.

web scraping
Logo of CapSolver

Lucas Mitchell

03-Dec-2025

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

Panduan lengkap ini akan membahas secara mendalam apa itu Puppeteer dan cara menggunakannya secara efektif dalam pengambilan data web.

web scraping
Logo of CapSolver

Emma Foster

03-Dec-2025

Cara Membuat Agen AI Penyedot Web (Tutorial Ramah Pemula)
Cara Membuat Agen AI Pengambil Data Web (Panduan Ramah Pemula)

Pelajari cara membuat AI Agent Web Scraper dari awal dengan tutorial yang ramah pemula ini. Temukan komponen inti, contoh kode, dan cara mengatasi pengukuran anti-bot seperti CAPTCHAs untuk pengumpulan data yang andal.

web scraping
Logo of CapSolver

Emma Foster

02-Dec-2025

Cara Mengintegrasikan Pemecahan CAPTCHA dalam Alur Kerja Scraping AI
Cara Mengintegrasikan Penyelesaian CAPTCHA dalam Alur Kerja Scraping AI Anda

Menguasai integrasi layanan penyelesaian CAPTCHA ke dalam alur kerja scraping AI Anda. Pelajari praktik terbaik untuk reCAPTCHA v3, Cloudflare, dan AWS WAF untuk memastikan pengumpulan data yang andal dan bervolume tinggi.

web scraping
Logo of CapSolver

Ethan Collins

28-Nov-2025