Web Scraping Neden Kritik Bir Yetkinliktir
Dijital dünyadaki verilerin büyük çoğunluğu yapılandırılmış API'ler üzerinden erişime açık değildir. Fiyat karşılaştırma platformları, pazar araştırması araçları, agregatör sistemler ve rekabet analizi çözümleri, web scraping olmadan işlevsel olamaz. Doğru tasarlanmış bir veri toplama pipeline'ı, ham web verilerini iş değerine dönüştüren temel altyapıdır.
Ancak web scraping, basit bir HTTP isteği gönderip HTML parse etmenin çok ötesinde bir mühendislik disiplinidir. Büyük ölçekli sistemlerde güvenilirlik, ölçeklenebilirlik, yasal uyumluluk ve etik kurallar gözetilmelidir. Bu rehberde, üretim ortamında çalışacak kalitede bir veri toplama sistemi tasarlamanın tüm boyutlarını ele alacağız.
2026 itibarıyla web siteleri giderek daha karmaşık anti-bot mekanizmaları kullanmakta, JavaScript ağırlıklı SPA mimarileri yaygınlaşmakta ve yasal düzenlemeler sıkılaşmaktadır. Bu ortamda profesyonel düzeyde scraping altyapısı kurmak, yalnızca teknik bilgi değil mimari tasarım becerisi de gerektirir.
Crawler Tasarım Desenleri
Breadth-First Crawling
Geniş kapsamlı tarama stratejisidir. Bir sitenin tüm sayfalarını keşfetmek istediğinizde kullanılır. URL kuyruğuna eklenen bağlantılar seviye seviye ziyaret edilir. Arama motorlarının indeksleme stratejisine benzer. Avantajı, sitenin genel yapısını hızlıca kavramanızı sağlamasıdır. Dezavantajı ise gereksiz sayfaları da tarayarak bant genişliği ve işlem gücü israfına yol açmasıdır. Site haritası çıkarma ve keşif amaçlı taramalarda tercih edilir.
Focused Crawling
Belirli bir konuya veya veri türüne odaklanan tarama stratejisidir. Örneğin bir e-ticaret sitesinden yalnızca ürün sayfalarını çekmek istiyorsanız, URL desenlerini analiz ederek yalnızca ilgili sayfaları ziyaret edersiniz. Bu yaklaşım bant genişliği ve işlem gücü açısından çok daha verimlidir. URL kalıplarını regex ile tanımlayın ve yalnızca bu kalıplara uyan sayfaları kuyruğa ekleyin. Agregatör platformlarda ve dikey veri toplama projelerinde bu desen standarttır.
Incremental Crawling
Yalnızca değişen veya yeni eklenen içerikleri tespit edip çeken stratejidir. HTTP başlıkları (Last-Modified, ETag), sitemap.xml dosyaları ve RSS feed'leri değişiklik tespitinde kullanılır. Agregatör platformlarda veri güncelliğini sağlamak için bu desen vazgeçilmezdir. Önceki tarama sonuçlarının hash değerleri saklanarak, sayfa içeriği değişmediği sürece yeniden işlenmez. Bu yaklaşım, sistem kaynaklarını önemli ölçüde tasarruf ettirir.
Politeness-Aware Crawling
Kaynak siteye saygılı davranmayı esas alan tasarım desenidir. robots.txt kurallarına uyum, istekler arasında bekleme süresi (crawl delay), eşzamanlı istek sayısının sınırlandırılması ve yoğun saatlerde tarama hızının düşürülmesi bu desenin temel ilkeleridir. Kaynak sitenin altyapısına zarar vermemek hem etik hem de pratik bir zorunluluktur; aşırı agresif tarama IP engellemelerine ve hukuki sorunlara yol açabilir.
Headless Browser vs HTTP Tabanlı Yaklaşımlar
Headless Browser Araçları: Puppeteer ve Playwright
Modern web siteleri JavaScript ile dinamik olarak render edilir. Bu tür sitelerin verilerini çekmek için gerçek bir tarayıcı ortamı gereklidir. Puppeteer (Chrome/Chromium) ve Playwright (Chrome, Firefox, WebKit) bu ihtiyacı karşılayan başlıca araçlardır.
Playwright, çoklu tarayıcı desteği, otomatik bekleme mekanizmaları ve daha güçlü selector API'si ile 2026 itibarıyla Puppeteer'a karşı belirgin bir avantaj sağlamaktadır. Her iki araç da sayfa etkileşimi (tıklama, form doldurma, kaydırma), ekran görüntüsü alma ve ağ trafiğini izleme yeteneklerine sahiptir. Playwright'ın trace viewer özelliği, hata ayıklama sürecini önemli ölçüde kolaylaştırır.
Headless browser kullanımının dezavantajları da göz ardı edilmemelidir: yüksek bellek tüketimi, yavaş çalışma hızı ve karmaşık altyapı gereksinimleri. Her tarayıcı oturumu 50-200 MB RAM tüketebilir ve bu durum büyük ölçekli taramalarda ciddi maliyet oluşturur. Tarayıcı havuzlama (browser pooling) ve oturum yeniden kullanımı ile kaynak tüketimi optimize edilebilir.
HTTP Tabanlı Araçlar: Scrapy ve Requests
Statik HTML sayfaları veya API yanıtları için headless browser kullanmak gereksiz kaynak israfıdır. Scrapy (Python), HTTP tabanlı scraping için endüstri standardı bir framework sunar. Asenkron mimari, otomatik throttling, middleware desteği ve pipeline sistemi ile üretim ortamına hazır çözümler geliştirmeye olanak tanır.
Python requests kütüphanesi ise daha basit senaryolarda hızlı prototipleme için idealdir. BeautifulSoup veya lxml ile birlikte kullanıldığında etkili bir HTML parse çözümü oluşturur. lxml, C tabanlı implementasyonu sayesinde BeautifulSoup'a göre 10-100 kat daha hızlı parse performansı sunar. Büyük ölçekli projeler için Scrapy'nin sunduğu yapısal avantajlar tercih edilmelidir.
Hangi Aracı Ne Zaman Kullanmalı
Karar verirken şu kuralı uygulayın: hedef site JavaScript ile render ediliyorsa headless browser, statik HTML sunuyorsa HTTP tabanlı araç kullanın. Bazı siteler hibrit yapıdadır; ana sayfa statik olabilirken ürün detay sayfaları dinamik olabilir. Bu durumda her sayfa türü için farklı strateji belirleyin. Bir ipucu olarak, sayfanın JavaScript devre dışı bırakıldığında içerik görünüyorsa HTTP tabanlı araçlar yeterlidir.
Anti-Bot Tespit ve Etik Scraping
Yaygın Anti-Bot Mekanizmaları
Web siteleri botları tespit etmek ve engellemek için çeşitli mekanizmalar kullanır. IP bazlı hız sınırlama, CAPTCHA sistemleri (reCAPTCHA v3, hCaptcha, Turnstile), JavaScript challenge'ları, tarayıcı parmak izi analizi, honeypot tuzakları ve davranış analizi bunların başlıcalarıdır.
Cloudflare, Akamai Bot Manager ve PerimeterX gibi kurumsal anti-bot çözümleri, sofistike tespit yöntemleri kullanır. Mouse hareketleri, klavye etkileşim desenleri, WebGL parmak izi, canvas fingerprinting ve navigator.webdriver gibi JavaScript API'leri ile gerçek kullanıcıyı bottan ayırt eder. TLS fingerprinting (JA3/JA4) gibi ağ katmanı tespitleri de yaygınlaşmaktadır.
Etik Scraping İlkeleri
Teknik olarak bir engeli aşabilmek, bunu yapmanız gerektiği anlamına gelmez. Etik scraping için şu ilkelere uyun:
Birincisi, robots.txt dosyasını her zaman kontrol edin ve kurallarına uyun. İkincisi, site kullanım koşullarını okuyun ve scraping'i yasaklayan maddelere dikkat edin. Üçüncüsü, makul istek hızları belirleyin; saniyede 1-2 istek genellikle kabul edilebilir bir limitken, saniyede yüzlerce istek kaynak siteyi olumsuz etkiler. Dördüncüsü, User-Agent header'ında botunuzu tanımlayın ve iletişim bilgilerinizi ekleyin. Beşincisi, mümkünse site sahibiyle iletişime geçerek resmi bir veri erişim yolu talep edin.
Hız Sınırlama ve Nezaket Politikaları
Rate limiting, hem kaynak siteye saygı hem de kendi IP adreslerinizin engellenmesini önlemek için zorunludur. Domain bazlı hız sınırlama uygulayın; farklı siteler farklı tolerans seviyelerine sahiptir. Gece saatlerinde veya düşük trafik dönemlerinde tarama yaparak kaynak site üzerindeki etkiyi minimize edin. Exponential backoff stratejisi ile HTTP 429 (Too Many Requests) yanıtlarına uygun şekilde tepki verin. Token bucket veya leaky bucket algoritmaları ile hassas hız kontrolü sağlayabilirsiniz.
Veri Çıkarma Pipeline Mimarisi
Pipeline Katmanları
Etkili bir veri toplama pipeline'ı dört ana katmandan oluşur:
Fetcher Katmanı: URL kuyruğundan hedef adresleri alır ve HTTP istekleri gönderir. Hata yönetimi, tekrar deneme mekanizmaları ve proxy rotasyonu bu katmanda gerçekleşir. Başarısız istekler için dead letter queue oluşturarak daha sonra yeniden deneme yapılmasını sağlayın.
Parser Katmanı: Ham HTML veya JSON yanıtlarından yapılandırılmış veri çıkarır. CSS selector'lar, XPath ifadeleri veya düzenli ifadeler (regex) kullanılır. Site yapısı değişikliklerine karşı esnek parser'lar yazmak uzun vadeli bakımı kolaylaştırır. Her parser için birim testler yazarak regresyonları erken tespit edin.
Transformer Katmanı: Çıkarılan ham verileri temizler ve dönüştürür. Fiyat formatlarının standartlaştırılması, tarih dönüşümleri, karakter kodlama düzeltmeleri, HTML entity decode işlemleri ve eksik alan kontrolü bu katmanda yapılır. Veri doğrulama kuralları ile tutarsız verileri filtreleyin.
Loader Katmanı: İşlenmiş verileri hedef depolama sistemine yazar. Veritabanı, dosya sistemi, mesaj kuyruğu veya API endpoint'i hedef olabilir. Batch insert ile veritabanı yazma performansını optimize edin ve upsert mantığı ile mevcut kayıtların güncellenmesini sağlayın.
Hata Yönetimi ve Dayanıklılık
Üretim ortamında çalışan bir scraper, çeşitli hata türleriyle başa çıkabilmelidir. Ağ zaman aşımları, HTTP hataları (403, 404, 500), beklenmeyen HTML yapısı değişiklikleri, CAPTCHA engellemeleri ve proxy başarısızlıkları rutin sorunlardır. Her hata türü için önceden tanımlanmış bir strateji belirlenmeli ve hata oranları anlık olarak izlenmelidir.
Circuit breaker deseni, belirli bir kaynak sürekli hata verdiğinde otomatik olarak o kaynağa yapılan istekleri durdurup belirli bir süre sonra yeniden deneme yapılmasını sağlar. Bu desen, hem kaynak siteyi hem de kendi sisteminizi korur. Half-open durumunda sınırlı sayıda deneme yapılarak kaynağın tekrar erişilebilir olup olmadığı kontrol edilir.
Zamanlama ve Orkestrasyon
Cron vs Orkestrasyon Araçları
Basit projeler için cron tabanlı zamanlama yeterli olabilir. Ancak onlarca farklı kaynağın farklı periyotlarla taranması, bağımlılık yönetimi ve hata durumunda yeniden çalıştırma gibi gereksinimler ortaya çıktığında Apache Airflow, Prefect veya Dagster gibi orkestrasyon araçlarına ihtiyaç duyulur.
Bu araçlar DAG (Directed Acyclic Graph) tabanlı iş akışı tanımı, paralel görev yürütme, bağımlılık yönetimi, yeniden çalıştırma mekanizmaları ve detaylı izleme panelleri sunar. Smart Maple olarak büyük ölçekli veri toplama projelerinde Airflow ve Prefect'i aktif olarak kullanıyoruz. Prefect'in Python-native yaklaşımı ve bulut tabanlı orkestrasyon yetenekleri, özellikle küçük ve orta ölçekli ekipler için cazip bir alternatif sunmaktadır.
Dağıtık Crawling
Tek bir makinenin kapasitesinin yetersiz kaldığı senaryolarda crawling işini birden fazla worker'a dağıtmak gerekir. Redis veya RabbitMQ tabanlı bir mesaj kuyruğu, URL'leri worker'lara dağıtır. Her worker bağımsız olarak çalışır, sonuçları merkezi depolamaya yazar. Kubernetes üzerinde otomatik ölçeklendirme ile talep arttığında worker sayısı dinamik olarak artırılabilir.
Scrapy-Redis gibi kütüphaneler, Scrapy'nin dağıtık ortamda çalışmasını sağlar. URL kuyruğu ve ziyaret edilmiş URL seti Redis üzerinde paylaşılarak worker'lar arasında koordinasyon sağlanır. Bu yaklaşım, mevcut Scrapy projelerini minimum değişiklikle dağıtık hale getirir.
Yasal Çerçeve
robots.txt ve Kullanım Koşulları
robots.txt dosyası, site sahiplerinin botlara hangi sayfaları tarayabileceklerini belirttiği bir standarttır. Yasal bağlayıcılığı ülkeden ülkeye değişse de etik scraping açısından uyulması gereken temel referans noktasıdır. Site kullanım koşulları ise sözleşmesel bir bağlayıcılık taşıyabilir; scraping'i açıkça yasaklayan koşullar yasal risk oluşturur. ABD'deki hiQ Labs v. LinkedIn davasından bu yana kamuya açık verilerin scraping'i konusunda daha net emsal kararlar oluşmuştur, ancak her bölgenin hukuki çerçevesi farklıdır.
KVKK ve GDPR Uyumluluğu
Kişisel veri içeren sayfaların taranması, Türkiye'de KVKK ve Avrupa Birliği'nde GDPR kapsamında özel yükümlülükler doğurur. Kişisel verilerin toplanması, işlenmesi ve saklanması için yasal bir dayanak gereklidir. Kamu erişimine açık veriler bile kişisel veri niteliği taşıyabilir. Veri minimizasyonu ilkesi uygulanmalı; yalnızca ihtiyaç duyulan veriler toplanmalıdır. Toplanan verilerin işlenme amacı, saklama süresi ve üçüncü taraflarla paylaşım koşulları açıkça belirlenmelidir.
Sektörel Düzenlemeler
Finans, sağlık ve telekomünikasyon gibi düzenlemeye tabi sektörlerde veri toplama faaliyetleri ek kısıtlamalara tabidir. Bu sektörlerdeki projeler için hukuki danışmanlık almak zorunludur. Telif hakkı ile korunan içeriklerin sistematik kopyalanması da ayrı bir hukuki risk alanıdır.
İzleme ve Uyarı Sistemleri
Crawler İzleme Metrikleri
Üretim ortamında çalışan crawler'ları izlemek için şu metrikleri takip edin: başarılı istek oranı, ortalama yanıt süresi, toplanan kayıt sayısı, hata oranı ve türleri, proxy sağlık durumu, bellek ve CPU kullanımı ve kuyruk derinliği. Bu metriklerin Prometheus ve Grafana ile görselleştirilmesi, sorunların erken tespitini sağlar. Structured logging ile her isteğin detaylı kaydını tutarak sorun analizini kolaylaştırın.
Yapısal Değişiklik Tespiti
Web siteleri tasarımlarını ve HTML yapılarını düzenli olarak değiştirir. Bu değişiklikler, mevcut parser'ları kırabilir ve veri kalitesini düşürebilir. Otomatik yapısal değişiklik tespiti için şu stratejiler uygulanabilir: çıktı şemasına göre alan doluluk oranlarının izlenmesi, beklenmeyen boş alanlar için uyarı oluşturulması, periyodik HTML yapı karşılaştırması ve referans snapshot'lar ile fark analizi.
Uyarı Eşikleri
Kritik eşiklerin aşılması durumunda anında bildirim yapılmalıdır. Hata oranının belirli bir yüzdenin üzerine çıkması, toplanan kayıt sayısının beklenenden belirgin şekilde düşük olması, yanıt sürelerinin normalin üzerinde seyretmesi ve disk veya bellek kullanımının kritik seviyelere ulaşması durumlarında uyarılar tetiklenmelidir. PagerDuty, Opsgenie veya Slack webhook entegrasyonları ile ekip bilgilendirilir.
Performans Optimizasyonu
Bağlantı Havuzlama ve Oturum Yönetimi
Her istek için yeni bir TCP bağlantısı açmak yerine bağlantı havuzlama (connection pooling) kullanın. Bu yaklaşım, TCP handshake ve TLS negotiation maliyetlerini ortadan kaldırarak önemli performans kazanımı sağlar. HTTP/2 multiplexing desteği ile aynı bağlantı üzerinden birden fazla istek paralel gönderilebilir.
Önbellek Stratejileri
Sık değişmeyen sayfalar için HTTP önbellek mekanizmalarını kullanın. ETag ve Last-Modified başlıkları ile koşullu istekler göndererek bant genişliği tasarrufu sağlayın. Değişmemiş sayfalar için yalnızca 304 (Not Modified) yanıtı alınır ve sayfa yeniden indirilmez. Yerel disk önbelleği ile geliştirme ve test süreçlerinde gerçek sitelere istek göndermeden çalışabilirsiniz.
Asenkron İşleme
Python'da asyncio ve aiohttp, Node.js'de native async/await ile eşzamanlı istek gönderimi, I/O yoğun scraping işlemlerinde çarpıcı performans artışı sağlar. Senkron bir scraper dakikada 60 sayfa çekerken, asenkron bir scraper aynı sürede 600-1000 sayfa çekebilir. Ancak eşzamanlılık seviyesini dikkatli ayarlayın; aşırı eşzamanlılık kaynak siteyi olumsuz etkiler ve IP engellemelerine yol açabilir. Semaphore ile eşzamanlı istek sayısını kontrol altında tutun.
Proxy Yönetimi ve IP Rotasyonu
Büyük ölçekli scraping operasyonlarında proxy yönetimi vazgeçilmez bir bileşendir. Tek bir IP adresinden yüksek hacimli istek göndermek kaçınılmaz olarak engellenmeye yol açar. Residential proxy'ler gerçek kullanıcı IP'leri sunarak tespit edilme riskini minimize eder; datacenter proxy'ler ise daha yüksek hız ve düşük maliyet avantajı sağlar.
Proxy havuzunun sağlık durumu sürekli izlenmelidir. Engellenmiş veya yavaş proxy'ler otomatik olarak devre dışı bırakılmalı ve belirli aralıklarla yeniden test edilmelidir. Coğrafi hedefleme gerektiren senaryolarda, hedef ülkedeki proxy'ler kullanılarak lokasyon bazlı içeriklere erişim sağlanır. Proxy maliyetleri toplam operasyonel bütçenin önemli bir kalemini oluşturabilir; bu nedenle proxy kullanımını optimize etmek maliyet açısından kritiktir.
Sticky session desteği, aynı IP üzerinden birden fazla ardışık istek göndermeyi gerektiren senaryolarda (oturum gerektiren siteler, çok sayfalı navigasyon) kullanılır. Rotating proxy ise her istekte farklı IP kullanarak parmak izi tespitini zorlaştırır.
Sonuç
Web scraping ve veri toplama pipeline tasarımı, agregatör platformlar, pazar araştırması ve rekabet analizi gibi birçok kritik uygulama alanının temelini oluşturur. Başarılı bir veri toplama sistemi, teknik mükemmelliğin yanı sıra etik ilkelere ve yasal çerçeveye uyum gerektirir. Doğru araç seçimi, dayanıklı hata yönetimi, etkili izleme mekanizmaları ve sürdürülebilir bir mimari ile güvenilir veri toplama altyapıları oluşturmak mümkündür. Küçük ölçekli bir prototip ile başlayın, metriklere dayalı kararlar alın ve sisteminizi kademeli olarak büyütün. Her aşamada etik ve yasal sınırları gözetin; sürdürülebilir bir scraping altyapısı ancak bu dengeyle mümkündür.
İlgili Makaleler
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Devamını Oku: MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a TaşımaLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Devamını Oku: LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Devamını Oku: Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
