import os
import time
import random
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui
# 1. TARAYICI AYARLARI
def setup_driver():
chrome_options = Options()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)
# Kullanıcı ajanını değiştir (insan gibi görünmesi için)
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
# İndirme klasörü ayarları
download_folder = os.path.join(os.getcwd(), "EBA_Indirilenler")
os.makedirs(download_folder, exist_ok=True)
prefs = {
"download.default_directory": download_folder,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": False
}
chrome_options.add_experimental_option("prefs", prefs)
# WebDriverManager ile otomatik chromedriver kurulumu
try:
from webdriver_manager.chrome import ChromeDriverManager
service = Service(ChromeDriverManager().install())
except:
service = Service('chromedriver.exe')
driver = webdriver.Chrome(service=service, options=chrome_options)
# Bot tespitini önleme
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
return driver, download_folder
# 2. İNDİRME İŞLEMLERİ
def download_tests():
try:
driver, download_folder = setup_driver()
base_url = "https://ogmmateryal.eba.gov.tr/soru-bankasi-soru-tipi-sec/biyoloji?s=7&d=6&k=on,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487"
print("\nEBA Soru Bankası İndirici Başlatılıyor...")
print(f"İndirilenler klasörü: {download_folder}")
# Test tipleri
test_types = {
"css": "Çoktan Seçmeli",
"bbs": "Beceri Temelli",
"aus": "Açık Uçlu"
}
for test_type, test_name in test_types.items():
print(f"\n>>> {test_name} Testleri İşleniyor...")
try:
# Sayfayı aç
driver.get(f"{base_url}&t={test_type}")
time.sleep(random.uniform(3, 5)) # Rastgele bekleme
# Sayfayı biraz kaydır (insan taklidi)
driver.execute_script("window.scrollBy(0, 300)")
time.sleep(1)
# Test linklerini bul
test_links = WebDriverWait(driver, 20).until(
EC.presence_of_all_elements_located((By.XPATH, "//a[contains(@class, 'list-group-item')]")))
print(f"Bulunan test sayısı: {len(test_links)}")
for i, link in enumerate(test_links[:2], 1): # Sadece ilk 2 test
try:
print(f"\n{i}. Test: {link.text.strip()}")
# Linke tıkla (JavaScript ile)
driver.execute_script("arguments[0].click();", link)
time.sleep(random.uniform(2, 4))
# İndirme butonunu bul
download_btn = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//a[contains(@title, 'İndir') and contains(@class, 'btn-success')]")))
# İndirme butonuna tıkla
driver.execute_script("arguments[0].click();", download_btn)
print("İndirme başlatıldı...")
# İndirme için bekle
time.sleep(random.uniform(5, 8))
# Geri dön
driver.back()
time.sleep(random.uniform(2, 3))
except Exception as e:
print(f"Test indirme hatası: {str(e)}")
driver.back()
continue
except Exception as e:
print(f"Test listesi alınamadı: {str(e)}")
continue
except Exception as e:
print(f"Beklenmeyen hata: {str(e)}")
finally:
if 'driver' in locals():
driver.quit()
input("\nİşlem tamamlandı. Çıkmak için ENTER tuşuna basın...")
if __name__ == "__main__":
pyautogui.PAUSE = 1
download_tests()burada 10-11-12.sınıfların tüm derslere ait testleri almam gerekiyor. 100den fazla ders ve her derse ait 50-60 test. elle yapınca canım çıkıyor. 61 testi elle indirmek 1 saatimi aldı. YZ desteği de aldım ama sadece bir tanesi bir dosya indirebildi başka indiremedi. gemini, chatgpt, qwen, deepseek... beceremedi hiçbiri. var mı yardımcı olacakkodu geliştirmek için yardım istiyorum iş ilanı değildir