📚 Bu yazı bir serinin parçası — Web Scraping İleri Seviye
  1. Bölüm 1: Web Scraping İleri #1: Sayfalama ve Çok Sayfalı Veri
  2. Bölüm 2: Web Scraping İleri #2: JavaScript'li Siteler ve Selenium (bu yazı)
  3. Bölüm 3: Web Scraping İleri #3: Engeller, Captcha ve IP Limitleri

Bazı sitelerde veriyi requests ile çektiğinizde HTML boş gelir — çünkü içerik tarayıcıda JavaScript çalıştıktan sonra yüklenir. Bu durumda gerçek bir tarayıcıyı otomatik süren Selenium'a ihtiyacınız var.

Kurulum

pip install selenium

Modern Selenium sürümleri tarayıcı sürücüsünü otomatik indirir; ayrıca bir şey kurmanıza gerek yok.

Temel kullanım

from selenium import webdriver
from selenium.webdriver.common.by import By

surucu = webdriver.Chrome()
surucu.get("https://example.com")

# Sayfadaki bir elemani sec
baslik = surucu.find_element(By.TAG_NAME, "h1")
print(baslik.text)

surucu.quit()

İçeriğin yüklenmesini beklemek

En sık yapılan hata: eleman daha yüklenmeden onu aramak. Doğrusu, elemanın gelmesini beklemektir:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

bekle = WebDriverWait(surucu, 10)
urunler = bekle.until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.urun"))
)
for u in urunler:
    print(u.text)

Tıklamak, yazmak, kaydırmak

from selenium.webdriver.common.by import By

surucu.find_element(By.ID, "arama").send_keys("laptop")
surucu.find_element(By.CSS_SELECTOR, "button.ara").click()

# Sayfayi asagi kaydir (sonsuz scroll icin)
surucu.execute_script("window.scrollTo(0, document.body.scrollHeight)")
💡

Tarayıcıyı görünmeden (arka planda) çalıştırmak için headless modunu açabilirsiniz — sunucuda çalıştırırken şart olur.

Selenium güçlüdür ama yavaştır; mümkünse önce requests deneyin, olmuyorsa Selenium'a geçin. Sıradaki yazıda kazımanın en can sıkıcı kısmına bakacağız: engeller, captcha ve IP limitleri.