Python - Selenium ile Twitter (X) Login Otomasyonu

kusha · 03 Ağustos 2026 · 6 dk okuma

Bazı X (Twitter) sayfaları, giriş yapmamış bir tarayıcıya güncel içeriği (ör. bir hesabın en son tweeti) tam olarak göstermez — güncel veriye erişmek için oturum açmış olmanız gerekir. Bu derste Selenium ile bir X hesabına programatik giriş yapmayı göreceğiz.

Neden headless Mod Kullanmıyoruz?

Selenium'un "headless" modu, tarayıcı penceresini hiç açmadan arka planda çalışmasını sağlar. Ancak X gibi bazı siteler, headless modda gelen istekleri tespit edip engelleyebilir — bu yüzden bu derste normal (görünür pencereli) modda ilerliyoruz.

Kurulum

pip install selenium chromedriver-autoinstaller

Giriş Sayfasına Gitmek

import chromedriver_autoinstaller
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

chromedriver_autoinstaller.install()
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)

driver.get("https://twitter.com/i/flow/login")

Elemanların Yüklenmesini Beklemek: WebDriverWait

Sabit bir time.sleep(5) koyup "umarım o zamana kadar sayfa yüklenir" demek yerine, WebDriverWait, belirttiğiniz eleman gerçekten tıklanabilir/mevcut hale gelene kadar bekler — bu hem daha hızlı (sayfa erken yüklenirse beklemez) hem daha güvenilirdir (yavaş bir internette de hata vermez).

kullanici_adi_input = wait.until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "input[autocomplete='username']"))
)
kullanici_adi_input.send_keys("kullanici_adiniz")

Doğru Elemanı Bulmak: Tarayıcı "İncele" Aracı

Kullanıcı adı, şifre gibi giriş alanlarının tam CSS seçicisini veya XPath'ini bulmak için tarayıcınızda o alana sağ tıklayıp İncele'yi kullanın — input etiketinin autocomplete veya benzer bir özniteliğini (attribute) not edip kodda o özniteliğe göre eşleştirme yapın.

"İleri" Butonuna Tıklamak

ileri_butonu = wait.until(
    EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='İleri']]"))
)
ileri_butonu.click()

Şifreyi Girmek ve Giriş Yapmak

sifre_input = wait.until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "input[autocomplete='current-password']"))
)
sifre_input.send_keys("sifreniz")

giris_butonu = wait.until(
    EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Giriş yap']]"))
)
giris_butonu.click()

Bu Otomasyonun Kırılganlığı

Bu tür siteye özgü seçiciler (CSS selector/XPath), hedef sitenin arayüz güncellemeleriyle sıkça değişir — bir gün çalışan kod, sitenin bir HTML güncellemesinden sonra çalışmayı durdurabilir. Bu, sitelere özgü scraping/otomasyon çözümlerinin genel bir zayıflığıdır; mümkün olduğunda resmi bir API kullanmak (varsa) her zaman daha kararlı bir çözümdür.

Sırada Ne Var?

Sırada, Binance API'siyle kripto para fiyatlarını gerçek zamanlı çekmeyi göreceğiz.