Selenium ile Dinamik Web Sitelerinden Veri Çekme

21 views

Selenium ile Dinamik Web Sitelerden Veri Çekme

Web sitelerinin çoğu günümüzde JavaScript kullanarak içerik yükler. Bu tür dinamik sitelerde requests + BeautifulSoup yöntemi genellikle yetersiz kalır. İşte bu noktada Selenium devreye girer.

Selenium, gerçek bir tarayıcıyı kontrol ederek web sitelerini otomatikleştirmenizi sağlar. Bu sayede JavaScript ile yüklenen içerikleri de çekebilirsiniz.

Selenium Ne Zaman Kullanılmalıdır?

Durum Önerilen Araç
Statik HTML siteleri requests + BeautifulSoup
JavaScript ile içerik yükleyen siteler Selenium
Login gerektiren siteler Selenium
Karmaşık etkileşimler (tıklama, kaydırma) Selenium
Yüksek hız gereken projeler requests + aiohttp

Selenium Kurulumu

Bash

pip install selenium webdriver-manager

Basit Selenium Örneği

Aşağıdaki örnekte Hacker News sitesinden başlıkları çekiyoruz:

Python

from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service chrome_options = Options() chrome_options.add_argument("--headless")  # Tarayıcıyı görünmez çalıştır driver = webdriver.Chrome(    service=Service(ChromeDriverManager().install()),    options=chrome_options ) driver.get("https://news.ycombinator.com/") basliklar = driver.find_elements("css selector", ".titleline") for baslik in basliklar[:10]:    print(baslik.text) driver.quit()

Sayfa Yüklenmesini Bekleme Yöntemleri

Dinamik sitelerde içerik hemen yüklenmeyebilir. Bu yüzden bekleme yöntemleri kullanmak önemlidir.

1. Implicit Wait (Genel Bekleme)

Python

driver.implicitly_wait(10)  # Tüm elementler için 10 saniye bekle

2. Explicit Wait (Belirli Element İçin Bekleme)

Python

from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".titleline")))

Selenium ile Proxy Kullanımı

Selenium’da proxy kullanmak için şu şekilde ayar yapabilirsiniz:

Python

chrome_options.add_argument('--proxy-server=http://proxy_ip:proxy_port')

Daha gelişmiş proxy yönetimi için Proxy SwitchyOmega eklentisi veya selenium-wire kütüphanesi kullanılabilir.

Selenium’un Avantajları

  • JavaScript ile yüklenen içerikleri çekebilir
  • Gerçek tarayıcı gibi davranır
  • Sayfa etkileşimleri (tıklama, form doldurma, kaydırma) yapılabilir
  • Dinamik sitelerde daha güvenilirdir

Selenium’un Dezavantajları

  • requests yöntemine göre daha yavaştır
  • Daha fazla sistem kaynağı tüketir
  • Headless modda bile bazı siteler tarafından tespit edilebilir
  • Kod yapısı daha karmaşıktır

Sonuç

Selenium, özellikle JavaScript ağırlıklı modern web sitelerinden veri çekmek için güçlü bir araçtır. requests + BeautifulSoup ile çözülemeyen projelerde Selenium kullanmak çoğu zaman en iyi çözümdür.

Ancak performans ve hız önemliyse, daha hafif alternatifler (Playwright, Scrapy) de değerlendirilebilir.

Bir sonraki makalemizde E-ticaret Sitelerinden Veri Toplama konusunu detaylı olarak inceleyeceğiz.

Hangi proxy türünün sizin projenize daha uygun olduğunu öğrenmek isterseniz, bizimle iletişime geçebilirsiniz.

 

ProxymoTR - Premium Proxy Services

Dijital Kartvizit

Top