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

kesalahan pengambilan data web
Apa itu Kesalahan 402, 403, 404, dan 429 dalam Web Scraping? Panduan Lengkap

Menguasai penanganan kesalahan web scraping dengan memahami apa yang merupakan kesalahan 402, 403, 404, dan 429. Belajar cara memperbaiki kesalahan 403 Dilarang, menerapkan solusi pembatasan laju untuk kesalahan 429, dan menangani kode status 402 Pembayaran Diperlukan yang baru muncul.

web scraping
Logo of CapSolver

Aloísio Vítor

12-Dec-2025

Pengambilan Data Web Dengan Python
Web Scraping Dengan Python: 2026 Taktik Terbaik

Pelajari taktik pengambilan data web Python teratas untuk 2026, termasuk menangani konten JavaScript dinamis, mengelola alur otentikasi, menyelesaikan CAPTCHA, mengidentifikasi perangkap tersembunyi, meniru perilaku manusia, mengoptimalkan pola permintaan, dan mengurangi penggunaan sumber daya dalam proyek pengambilan data web skala besar.

web scraping
Logo of CapSolver

Ethan Collins

12-Dec-2025

Menyelesaikan CAPTCHA web scraping
Pengambilan Data Web Tanpa Terblokir dan Cara Mengatasi Captcha Web Scraping

Scrapping web telah menjadi teknik yang populer untuk mengekstrak data dari situs web. Namun, banyak situs web menggunakan langkah anti-scrapping, termasuk...

web scraping
Logo of CapSolver

Ethan Collins

11-Dec-2025

Penelusuran Web dan Pengambilan Data Web
Penjelajahan Web vs. Pengambilan Data Web: Perbedaan Essensial

Ketahui perbedaan penting antara web crawling dan web scraping. Pelajari tujuan mereka yang berbeda, 10 penggunaan kasus yang kuat, dan bagaimana CapSolver membantu melewati blok AWS WAF dan CAPTCHA untuk pengumpulan data yang mulus.

web scraping
Logo of CapSolver

Nikolai Smirnov

09-Dec-2025

Cara Mengatasi Captchas Saat Scrapping Web dengan Scrapling dan CapSolver
Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver

Scrapling + CapSolver memungkinkan pengambilan data otomatis dengan ReCaptcha v2/v3 dan Cloudflare Turnstile bypass.

web scraping
Logo of CapSolver

Adélia Cruz

05-Dec-2025

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