Veri Çekme (Web Scraping) İçin Puppeteer Tarayıcı Botu: Dinamik Sayfa Yüklenme Gecikmesi Çözüm Rehberi

0 Ответы 3 Просмотры
·
Участники
Автор темы #0
İnternet siteleri giderek daha fazla dinamik içerik kullanmaya başladı ve bu da veri çekme işlemlerinde yeni zorluklar ortaya çıkarıyor. Geleneksel statik web scraping yöntemleri, sayfa tamamen yüklenmeden veya belirli öğeler DOM’a eklenmeden veri toplamaya çalıştığında başarısız olabiliyor. Bu noktada Puppeteer gibi otomasyon araçları devreye giriyor; çünkü bunlar tarayıcı ortamını gerçek kullanıcı gibi simüle ederek, sayfanın tam anlamıyla yüklenmesini sağlar.

İşte Puppeteer kullanırken karşılaşılabilecek en yaygın sorunlardan biri olan "dinamik sayfa yüklenme gecikmesi" ve buna çözüm yolları:

  1. waitForSelector() ve waitForTimeout(): Sayfa yüklenirken belirli elementlerin DOM’a eklenmesini veya belirli bir süre beklenmesini sağlamak önemli. Örneğin, sayfa içeriği belirli bir CSS sınıfı veya ID’ye sahip öğe yüklendiğinde, bu fonksiyonlar devreye girer.


  • await page.waitForSelector('.liste-icerik') kullanımı, ilgili içerik yüklendiğinde devam etmesini sağlar.
  • await page.waitForTimeout(3000) ise, belirli bir zaman dilimi bekleyerek, sayfanın arka planda yüklenmesine imkan tanır.


  1. networkidle0 ve networkidle2: Sayfa tamamen yüklenmiş gibi görünmesine rağmen, bazı dinamik içeriklerin yüklenmesi zaman alabilir. Bu durumda, Puppeteer’ın goto() fonksiyonunda waitUntil parametresi kullanılır:


  • await page.goto(url, { waitUntil: 'networkidle0' }) ile, sayfa üzerindeki tüm ağ etkinliği durduğunda işlem devam eder.
  • networkidle2 ise, en az iki adet ağ etkinliği kalana kadar bekler.


  1. Sayfa Kaynaklarını ve JavaScript’i Kontrol Etmek: Bazen sayfa, JavaScript tetiklenmeden veya belirli API çağrıları bitmeden içerik göstermez. Bu nedenle, sayfa içeriğini düzenli olarak kontrol etmek veya API isteklerini gözlemlemek gerekebilir.


  1. Dinamik İçeriklerin Yüklenmesini İzlemek: Sayfa belirli bir elementin yüklenmesini beklerken, JavaScript’in tetiklenmesini ve içeriklerin DOM’a eklenmesini gözlemlemek gerekir. Bu, detaylı bir waitForFunction() kullanımıyla sağlanabilir:


CODE
1await page.waitForFunction(() => document.querySelector('.dinamik-icerik') !== null);


Tüm bu yöntemleri doğru kombinasyonla kullanmak, Puppeteer ile dinamik sayfalardan güvenilir veri çekme işleminin temelidir. Ayrıca, sayfa yüklenme gecikmelerine karşı zaman aşımı ayarlarını optimize etmek, performans ve doğruluk açısından kritiktir.

İşte bu teknikler, modern web sitelerinin karmaşık yüklenme süreçlerinde bile etkili veri toplamayı sağlar. Dinamik içerik yüklenme gecikmesiyle ilgili daha detaylı örnekler veya karşılaştığınız spesifik sorunlar olursa, bunları çözmek için farklı stratejiler geliştirmek gerekebilir.

Чтобы ответить, необходимо войти в систему.

0 цитат выбрано