Bunu Neden İnşa Ettim?
"YÖK Atlas platformundan üniversite yerleştirme verilerini toplamak, dinamik JavaScript sayfalama yapısı ve kirli string verileri (ör. isme entegre edilmiş burs oranları, eğitim süreleri) nedeniyle standart HTTP istekleriyle çözülemez bir problemdir. Bu engeli aşmak için hedeflenen endpoint'leri otonom olarak gezen, ham metinleri agresif bir Regex hattıyla temizleyen ve veriyi yapılandırılmış formatlarda derleyen bir scraping mimarisi inşa ettim."
Mimari & Kararlar
Çıkarım (extraction) katmanı, DOM mutasyonlarını tetiklemek ve sayfalamayı yönetmek için Selenium WebDriver kullanır. AJAX yükleme durumları strict `WebDriverWait` ve `ExpectedConditions` metotlarıyla denetlenir. Ancak, WebDriver'ın yavaş IPC (Inter-Process Communication) çağrılarından kaçınmak için DOM parsing işlemi tamamen BeautifulSoup'a offload edilmiştir. Dönüşüm (transformation) katmanı, veriyi normalize etmek için `re` modülünü kullanırken, `pandas` kütüphanesi verinin tekilleştirilmesi ve bellek dostu bir şekilde çoklu formata (CSV, Excel, JSON, BSON) serileştirilmesi için kullanılmıştır.
Temel Özellikler
- 01.Selenium'un JS state yönetimi ile BeautifulSoup'un hızlı in-memory DOM ayrıştırma gücünü birleştiren hibrit kazıma mimarisi
- 02.Program adlarındaki parazit metadataları (burslar, süreler, indirim oranları) tespit edip temizleyen Regex tabanlı sanitasyon hattı
- 03.Asenkron DOM güncellemelerinden kaynaklanabilecek race condition'ları önlemek için `staleness_of` kullanan otonom sayfalama döngüsü
- 04.Veriyi 'ham' ve 'normalize edilmiş' olarak izole dizinlerde JSON, BSON, CSV ve Excel formatlarında eşzamanlı dışa aktarım