Tartışma

Sıfırdan Sunucu Yönetim Scripti: Puppeteer ile Toplu İstek (Batch Request) Atma ve DOM Yüklenme ve Element Bulamama Soru

Başlatan CyberWolf · 26 Ağu 2026 10:31 · 0 Görüntülenme · 0 Yanıtlar
Konuyu Açan #0
Puppeteer, Node.js ortamında başlatılan ve Chrome tarayıcısını kontrol eden bir kütüphanedir. Web scraping, otomasyon ve test senaryoları için oldukça kullanışlıdır. Bu makalede, Puppeteer kullanarak toplu istek atma (batch request) işlemini gerçekleştirecek ve DOM yüklenme ve element bulamama sorunlarını nasıl yöneteceğimizi ele alacağız.

1. Toplu İstek Atma

Puppeteer ile birden fazla URL'ye aynı anda istek atmak, performans açısından önemlidir. Bunun için Promise.all() yapısını kullanarak birden fazla sayfayı paralel olarak açabiliriz. Aşağıda bu işlemi gerçekleştiren bir örnek kod yer almaktadır:

CODE
12345678910111213141516171819
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    const urls = ['https://example.com', 'https://example.org', 'https://example.net'];

    const requests = urls.map(async (url) => {
        await page.goto(url);
        const content = await page.content(); // Sayfanın HTML içeriğini al
        return content;
    });

    const results = await Promise.all(requests);
    
    console.log(results); // Her sayfanın HTML içeriği
    await browser.close();
})();


Bu örnekte, üç farklı URL'ye aynı anda istek gönderiyoruz ve sonuçları topluyoruz.

2. DOM Yüklenme Sorunu

Bir sayfa yüklendiğinde, tüm DOM elemanlarının yüklenmesi zaman alabilir. Eğer belirli bir elemanı bulamazsak, bu durum genellikle sayfanın tam olarak yüklenmemesinden kaynaklanır. Bu tür durumları yönetmek için page.waitForSelector() fonksiyonunu kullanarak belirli bir elemanın yüklenmesini bekleyebiliriz:

CODE
12345678910
await page.goto(url);
await page.waitForSelector('#target-element', { timeout: 5000 })
    .then(() => {
        // Eleman bulundu, işlem yapabilirsiniz.
    })
    .catch(() => {
        // Eleman bulunamadı, hata yönetimi
        console.error('Eleman yüklenemedi.');
    });


Bu yapı ile, belirli bir süre içerisinde eleman yüklenmezse hata yönetimi yaparak kullanıcıyı bilgilendirebiliriz.

3. Element Bulamama Sorunu Yönetimi

Element bulamama durumunda yapılabilecek en iyi uygulamalardan biri, hata yönetimi ve yeniden deneme mekanizmasıdır. Örneğin, belirli bir sayfa için bir element yüklenemediğinde, belirli bir süre bekleyip tekrar deneyebiliriz:

CODE
12345678910111213141516
const retryOperation = async (page, url, retries = 3) => {
    await page.goto(url);
    for (let i = 0; i < retries; i++) {
        try {
            await page.waitForSelector('#target-element', { timeout: 5000 });
            // Eleman bulundu, işlem yapın
            break;
        } catch {
            console.warn([icode]Deneme ${i + 1}: Eleman bulunamadı, tekrar denenecek...[/icode]);
            await page.waitForTimeout(2000); // 2 saniye bekle
        }
    }
};

await retryOperation(page, url);


Bu yöntem, geçici ağ sorunları veya sayfanın yavaş yüklenmesi gibi durumlarda yardımcı olacaktır.

Sonuç olarak, Puppeteer ile toplu istek atmak ve DOM yüklenme ile element bulamama sorunlarını yönetmek, dikkatli bir yapılandırma ile oldukça verimli bir şekilde gerçekleştirilebilir. Bu tür tekniklerin kullanımı, otomasyon süreçlerinizi daha sağlam ve güvenilir hale getirecektir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi