Python'da Selenium kullanarak web otomasyonu yapabiliriz. Özellikle test otomasyonu, veri çekme (web scraping) ve bot yazılımı için kullanılır.
1) Selenium Kurulumu
Ayrıca, kullanacağın tarayıcı için uygun WebDriver'ı indirmelisin:
Chrome için: ChromeDriver
Firefox için: GeckoDriver
WebDriver dosyasını indirip Python dosyanla aynı dizine koyabilirsin veya PATH'e ekleyebilirsin.
2) Tarayıcıyı Açma ve Siteye Gitme
Eğer tarayıcıyı gizli (headless) modda açmak istersen:
3) Sayfa Üzerinde İşlemler
Web sayfasındaki elementleri seçip işlem yapabiliriz.
Bir Butona Tıklama
Metin Girişi (Form Doldurma)
4) XPath ve CSS Selector Kullanımı
Bazen elementleri seçerken XPath veya CSS Selector kullanmak gerekebilir.
5) Sayfadan Veri Çekme (Web Scraping)
6) Sayfa Kaydırma
7) Beklemeler (Waits)
Bazı sitelerde elementlerin yüklenmesini beklemek gerekebilir.
Sabit Bekleme (sleep)
Dinamik Bekleme (Explicit Waits)
8) Çerezleri Yönetme
9) Dosya Yükleme ve İndirme
10) Tarayıcıyı Kapatma
Küçük Bir Proje: Google'da Arama Yapıp Sonuçları Çekme
1) Selenium Kurulumu
Python:
pip install selenium
Ayrıca, kullanacağın tarayıcı için uygun WebDriver'ı indirmelisin:
Chrome için: ChromeDriver
Firefox için: GeckoDriver
WebDriver dosyasını indirip Python dosyanla aynı dizine koyabilirsin veya PATH'e ekleyebilirsin.
2) Tarayıcıyı Açma ve Siteye Gitme
Python:
from selenium import webdriver
driver = webdriver.Chrome() # ChromeDriver'ı kullanıyoruz
driver.get("Google") # Google'ı aç
Eğer tarayıcıyı gizli (headless) modda açmak istersen:
Python:
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Tarayıcıyı görünmez çalıştırır
driver = webdriver.Chrome(options=options)
driver.get("Google")
3) Sayfa Üzerinde İşlemler
Web sayfasındaki elementleri seçip işlem yapabiliriz.
Bir Butona Tıklama
Python:
from selenium.webdriver.common.by import By
driver.get("Welcome to Python.org")
buton = driver.find_element(By.LINK_TEXT, "Downloads")
buton.click() # Butona tıkla
Metin Girişi (Form Doldurma)
Python:
search_box = driver.find_element(By.NAME, "q") # Arama kutusunu seç
search_box.send_keys("Selenium Python") # Metin yaz
search_box.submit() # Enter tuşuna bas
4) XPath ve CSS Selector Kullanımı
Bazen elementleri seçerken XPath veya CSS Selector kullanmak gerekebilir.
Python:
element = driver.find_element(By.XPATH, "//input[@name='q']") # XPath ile seçme
element = driver.find_element(By.CSS_SELECTOR, "input[name='q']") # CSS Selector ile seçme
5) Sayfadan Veri Çekme (Web Scraping)
Python:
titles = driver.find_elements(By.TAG_NAME, "h2") # Tüm h2 etiketlerini al
for title in titles:
print(title.text) # Başlıkları ekrana yazdır
6) Sayfa Kaydırma
Python:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Sayfanın en altına kaydır
7) Beklemeler (Waits)
Bazı sitelerde elementlerin yüklenmesini beklemek gerekebilir.
Sabit Bekleme (sleep)
Python:
import time
time.sleep(3) # 3 saniye bekle
Dinamik Bekleme (Explicit Waits)
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.ID, "element_id")))
8) Çerezleri Yönetme
Python:
cookies = driver.get_cookies() # Mevcut çerezleri al
driver.add_cookie({"name": "test_cookie", "value": "12345"}) # Yeni çerez ekle
9) Dosya Yükleme ve İndirme
Python:
file_input = driver.find_element(By.NAME, "file")
file_input.send_keys("/path/to/file.txt") # Dosya yükle
10) Tarayıcıyı Kapatma
Python:
driver.quit() # Tarayıcıyı tamamen kapat
Küçük Bir Proje: Google'da Arama Yapıp Sonuçları Çekme
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("Google")
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.RETURN)
time.sleep(3)
results = driver.find_elements(By.CSS_SELECTOR, "h3")
for result in results:
print(result.text)
driver.quit()



