- Bölüm 1: Web Scraping İleri #1: Sayfalama ve Çok Sayfalı Veri
- Bölüm 2: Web Scraping İleri #2: JavaScript'li Siteler ve Selenium (bu yazı)
- 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.