CAPSOLVER
Blog
Scraping Web dengan Puppeteer: Mendeteksi Perubahan Situs Web dan Mengambil Tangkapan Layar

Scraping Web dengan Puppeteer: Mendeteksi Perubahan Situs Web dan Mengambil Tangkapan Layar

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

07-Oct-2024

Web scraping telah menjadi alat penting untuk mengotomatiskan pengumpulan data dan memantau situs web untuk perubahan. Di postingan blog ini, kita akan menjelajahi cara menggunakan Puppeteer, sebuah pustaka Node.js, untuk web scraping, mendeteksi perubahan di situs web, dan mengambil tangkapan layar dari perubahan ini.

Apa itu Puppeteer?

Puppeteer adalah pustaka Node.js yang menyediakan API tingkat tinggi untuk mengontrol Chrome atau Chromium tanpa kepala melalui protokol DevTools. Ini dapat digunakan untuk web scraping, pengujian otomatis, atau bahkan menghasilkan tangkapan layar dan PDF dari halaman web.

Prasyarat

Sebelum memulai, pastikan Anda telah menginstal hal-hal berikut:

Anda dapat menginstal Puppeteer dengan menjalankan perintah berikut di terminal Anda:

bash Copy
npm install puppeteer

Web Scraping Dasar dengan Puppeteer

Untuk memulai, mari kita buat web scraper dasar yang menavigasi ke situs web dan mengekstrak konten teks.

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

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Navigasi ke situs web
    await page.goto('https://example.com');

    // Ekstrak konten teks
    const content = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    console.log('Konten Halaman:', content);

    await browser.close();
})();

Skrip ini membuka browser tanpa kepala, menavigasi ke example.com, dan mengekstrak teks dari elemen <h1>. Anda dapat mengganti URL dengan situs web yang ingin Anda scraper dan menyesuaikan selektor agar sesuai dengan elemen yang Anda minati.

Mengambil Tangkapan Layar dengan Puppeteer

Puppeteer memungkinkan Anda mengambil tangkapan layar dari halaman web dengan mudah. Anda dapat menangkap tangkapan layar halaman penuh atau area tertentu dari halaman.

Berikut cara mengambil tangkapan layar halaman penuh:

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

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Navigasi ke situs web
    await page.goto('https://example.com');

    // Ambil tangkapan layar halaman penuh
    await page.screenshot({ path: 'screenshot.png', fullPage: true });

    await browser.close();
})();

Skrip ini menyimpan tangkapan layar dari seluruh halaman sebagai screenshot.png. Anda dapat memodifikasi path untuk menentukan nama file atau lokasi yang berbeda.

Mendeteksi Perubahan Situs Web

Memantau situs web untuk perubahan adalah fitur yang berguna dalam web scraping. Anda dapat mencapai ini dengan berulang kali memeriksa konten situs web dan membandingkannya dengan versi yang disimpan sebelumnya.

Berikut adalah contoh mendeteksi perubahan teks dan mengambil tangkapan layar jika kontennya berubah:

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

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Navigasi ke situs web
    await page.goto('https://example.com');

    // Ekstrak konten teks
    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    // Periksa apakah konten sebelumnya ada
    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    // Bandingkan konten saat ini dengan konten sebelumnya
    if (currentContent !== previousContent) {
        console.log('Konten telah berubah!');

        // Simpan konten baru
        fs.writeFileSync(previousContentPath, currentContent);

        // Ambil tangkapan layar dari perubahan
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('Tangkapan layar disimpan!');
    } else {
        console.log('Tidak ada perubahan yang terdeteksi.');
    }

    await browser.close();
})();

Dalam contoh ini:

  • Skrip mengekstrak konten dari elemen <h1>.
  • Ini membandingkan konten saat ini dengan versi yang disimpan sebelumnya (previous-content.txt).
  • Jika perubahan terdeteksi, itu mengambil tangkapan layar dan menyimpannya dengan stempel waktu di nama file, memastikan bahwa setiap tangkapan layar unik.
  • Konten baru disimpan ke previous-content.txt untuk perbandingan di masa mendatang.

Menjadwalkan Scraper untuk Dijalankan Secara Teratur

Anda dapat menggunakan Node.js untuk menjadwalkan skrip ini agar dijalankan pada interval menggunakan paket node-cron.

Pertama, instal node-cron:

bash Copy
npm install node-cron

Sekarang, modifikasi skrip Anda agar dijalankan pada interval yang ditentukan (misalnya, setiap 5 menit):

javascript Copy
const puppeteer = require('puppeteer');
const fs = require('fs');
const cron = require('node-cron');

cron.schedule('*/5 * * * *', async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://example.com');

    const currentContent = await page.evaluate(() => {
        return document.querySelector('h1').innerText;
    });

    const previousContentPath = 'previous-content.txt';
    let previousContent = '';

    if (fs.existsSync(previousContentPath)) {
        previousContent = fs.readFileSync(previousContentPath, 'utf8');
    }

    if (currentContent !== previousContent) {
        console.log('Konten telah berubah!');
        fs.writeFileSync(previousContentPath, currentContent);
        await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
        console.log('Tangkapan layar disimpan!');
    } else {
        console.log('Tidak ada perubahan yang terdeteksi.');
    }

    await browser.close();
});

Skrip ini akan dijalankan setiap 5 menit (*/5 * * * *) dan memeriksa perubahan di situs web. Jika mendeteksi perubahan, itu akan mengambil tangkapan layar dan mencatat pembaruan.

Kode Bonus

Klaim Kode Bonus Anda untuk solusi captcha teratas di CapSolver: scrape. Setelah menebus, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, tanpa batas.

Kesimpulan

Puppeteer adalah alat yang ampuh untuk web scraping dan mengotomatiskan tugas browser. Dalam postingan ini, kami menunjukkan cara menggunakan Puppeteer untuk web scraping dasar, mendeteksi perubahan situs web, dan menangkap tangkapan layar dari perubahan ini. Dengan teknik ini, Anda dapat memantau situs web dan melacak pembaruan secara otomatis. Pastikan untuk memeriksa kebijakan web scraping untuk menghindari pelanggaran ketentuan layanan.

Copy

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