Puppeteer – Tips Optimisasi

TIps 1 – Filter Resource

Menggunakan headless browser untuk web scrapping akan lebih lambat dan memakan bandwidth. Salah satu trik yang dapat digunakan adalah dengan menfilter request.

Umumnya project scrapping adalah mengambil konten text. File seperti image, stylesheet dan font dapat kita filter agar tidak didownload. Berikut kode sederhana untuk melakukan filter resource yang didownload.

Pada code dibawah kita akan mengakses web kompas.com tanpa image, stylesheet dan font.

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({
        headless: false
    });

    const page = await browser.newPage();

    await page.setRequestInterception(true);

    page.on('request', (request) => {
        if (['image', 'stylesheet', 'font'].includes(request.resourceType())){
            request.abort();
        }else{
            request.continue();
        }
    });

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

    debugger;
    //await browser.close();

    
})();

Karena kita akan memfilter request, kita perlu mengaktifkan request interception dengan menggunakan setRequestInterception. Setelah diset, kita bisa menggunakan method abort atau continue dan respond.

Saat Request di intercept, semua request akan berhenti, kecuali kita memberikan perintah abort, continued atau responded.

await page.setRequestInterception(true);

page.on('request', (request) => {
    if (['image', 'stylesheet', 'font'].includes(request.resourceType())){
        request.abort();
    }else{
        request.continue();
    }
});

Tips 2 – Mengabaikan SSL error

Kadang kala kita menghadapi SSL error saat mengakses suatu web. Untuk itu kita perlu menambahkan option saat memanggil puppteer.

const browser = await puppeteer.launch({
    headless: false,
    ignoreHTTPSErrors: true
});

Tips 3 – Mengatur Viewport Size

Default viewport size pada puppeteer adalah 800 x 600 pixels. Mengatur viewport berguna untuk memastikan element yang akan kita scrape dirender.

const browser = await puppeteer.launch({
    headless: false,
    ignoreHTTPSErrors: true,
    defaultViewport: {
        width: 1280,
        height: 720
    }        
});

Tips 4 – Proxy Server

Menggunakan proxy server adalah salah satu cara untuk mencegah ip banned saat melakukan scrapping. Dapat ditambahkan option seperti pada tips sebelumnya.

Format proxy server adalah ip:port

Hal yang perlu diperhatikan adalah, jangan menggunakan public proxy server saat melakukan scrapping data yang sensitif.

const browser = await puppeteer.launch({
    headless: false,
    ignoreHTTPSErrors: true,
    defaultViewport: {
        width: 1280,
        height: 720
    },
    args:['--proxy-server=87.255.70.183:8080']        
});
Sharing is caring:

Leave a Comment