Selenium ile Pagination Otomasyonu
Günümüzde web otomasyonu ve veri kazıma süreçlerinde, büyük veri setlerine ulaşmak için sayfalama (pagination) önemli bir rol oynar. Birçok web sitesi, içeriklerini sayfalara bölerek kullanıcı deneyimini optimize ederken, otomasyon araçlarıyla bu sayfa yapısını anlamak ve yönetmek hayli kritik hale gelir. Selenium, bu noktada en güçlü araçlardan biri olarak öne çıkar. Peki, nasıl verimli ve güvenilir bir pagination otomasyonu geliştirebiliriz?
İlk olarak, sayfalama yapısının analiz edilmesi gerekir. Çoğu site, "sonraki" butonu veya sayfa numaralarıyla yönlendirme sağlar. Bu yapıya göre, Selenium ile şu adımlar izlenebilir:
- Sayfa kaynağını inceleyerek, sayfa numaralarını veya "sonraki" düğmesinin HTML yapısını tespit edin. Genellikle, bu düğmenin XPath veya CSS seçicisi belirlenir.
- Selenium'da, bu düğmeye tıklama ve yeni sayfa yüklenmesini sağlama mekanizması kurulur. Örneğin, WebDriverWait kullanılarak, sayfa yüklenirken veya yeni içerik gelene kadar beklenir.
- Otomasyon döngüsü kurmak için, sayfa numaralarını veya "sonraki" düğmesine tıklama işlemi, belirli bir koşul sağlanana kadar tekrarlanır. Bu koşul, örneğin, son sayfayı göstermek veya belirli bir içerik seviyesine ulaşmak olabilir.
- Her sayfa yüklemesinde, içerik alınır ve işlenir. Bu, ürün listeleri, makale özetleri veya diğer veriler olabilir.
- Döngü sonunda, kaynakları kaydetmek veya çıktı almak için uygun işlemler yapılır.
Örnek olarak, aşağıdaki kod parçacığında, "sonraki" butonunun tıklanması ve sayfa atlaması gösterilmektedir:
1234567891011121314151617181920212223242526272829
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://ornek-site.com/urunler')
while True:
# İçeriği al
ürünler = driver.find_elements(By.CLASS_NAME, 'ürün-kapsayıcı')
for ürün in ürünler:
# Ürün bilgisi işlemleri
print(ürün.text)
try:
# Sonraki sayfaya geç
next_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[contains(text(), "Sonraki")]'))
)
next_button.click()
WebDriverWait(driver, 10).until(
EC.staleness_of(ürünler[0]) # Sayfa yenilendikten sonra yeni içerik beklenir
)
except:
# Son sayfa veya düğme bulunamazsa döngüyü kır
break
driver.quit()
Bu yapı, dinamik ve çok sayfalı içeriklerde otomasyonun güvenilirliğini arttırır. Ayrıca, sayfa yapısına göre uyarlama yaparken, AJAX veya dinamik içerik yüklemeleri gibi özel durumlar da göz önünde bulundurulmalı.
Sonuç olarak, Selenium ile pagination otomasyonu, sayfa yapısına uygun detaylı analiz ve doğru zamanlamalarla güvenilir hale gelir. Bu süreçler, büyük veri kazıma projelerinde zaman kazandırırken, iş akışını da optimize eder. Bu yöntemi kendi projelerinize uyarlarken, sayfa yapısına göre özelleştirmeler yapmanız gerekebilir.