Günümüzün dijital ekonomisinde, neredeyse her web sitesi bir veri hazinesi sunuyor. Ürün fiyatlarından haber başlıklarına, kullanıcı yorumlarından sosyal ağ içeriklerine kadar web üzerinde bulunan yapılandırılmış ve yarı-yapılandırılmış veriler; doğru tekniklerle toplandığında işletmeler, araştırmacılar ve geliştiriciler için eşsiz fırsatlar barındırıyor. Bu yoğun eğitim kampı, web kazımanın (web scraping) temel prensiplerinden başlayarak, Playwright temelli headless tarayıcı otomasyonundan gelişmiş anti‑bot kaçınma stratejilerine, LLM destekli veri çıkarımından ölçeklenebilir dağıtık sistem mimarilerine kadar tam bir yol haritası sunuyor. Teorik altyapıyı her adımda uygulamalı laboratuvarlarla pekiştirerek, katılımcıların gerçek dünyada karşılaşacakları zorlukları çözme becerisi kazanmalarını hedefliyor.
Web Scraping (Web Kazıma)
Sayfadaki kurs içeriği genel bilgi içindir. Eğitim kurumun ihtiyaçlarına göre tasarlanabilir. Detaylı bilgi için İletişim
Kurumsal sayfadasınız. Bireysel sayfaya geçebilirsiniz.

- Fiyat
- Fiyat alın
- Bilgi almak için
- İletişim
ᚱ
ᛚ
Kurs İçeriği
Temeller (Ön Çalışma)
Önkoşulları Sağlama
- Tüm katılımcıların gerekli önkoşullara sahip olduğundan emin olunması.
Python Temelleri Tekrarı
- Veri tipleri, döngüler, fonksiyonlar, temel OOP (Nesne Yönelimli Programlama), sanal ortamlar (virtual environments).
Web Teknolojilerine Giriş
- Web'in nasıl çalıştığı (HTTP/S requests/responses, Client/Server).
HTML & CSS Temelleri
- Yapı (tag'ler, attribute'lar), temel stil verme, DOM ağacı (DOM tree) konsepti.
Tarayıcı Geliştirici Araçlarına (Browser Developer Tools) Giriş
- Elementleri inceleme (inspecting elements), ağ isteklerini (network requests) görüntüleme, konsolu (console) anlama.
Geliştirme Ortamının Kurulumu
- Python, IDE (VS Code önerilir), temel Git kullanımı.
Uygulama Lab 0: Ortam Kurulumu & Web İnceleme
- Python, Git, VS Code kurulumu ve bir proje sanal ortamının (virtual environment) ayarlanması.
- "Hello, Scraping!" yazdıran basit bir Python script'i yazma.
- Basit bir statik web sitesinin (örneğin, toscrape.com) HTML yapısını ve ağ isteklerini (network requests) incelemek için tarayıcı DevTools kullanma. Anahtar HTML elementlerini (başlıklar, paragraflar, linkler) belirleme.
Statik Web Kazıma (Scraping) Temelleri
Temel Kazıma Kavramları
- Statik HTML'i ayrıştırma (parse etme) ve HTTP istekleri yapma.
Kazıma İş Akışı (Scraping Workflow)
- Fetch -> Parse -> Extract -> Store (Getir -> Ayrıştır -> Çıkart -> Sakla).
HTTP İstekleri Yapma
requests
kütüphanesini kullanma (GET/POST, headers, parameters). Durum kodlarını (status codes) ve hataları ele alma.
HTML Ayrıştırma (Parsing)
- Beautiful Soup 4 (BS4) kütüphanesine giriş. Parse ağacında gezinme (
find
,find_all
). Ayrıştırıcıları (parsers) anlama (lxml
,html.parser
).
CSS Selectors & XPath
- Elementleri hassas bir şekilde bulmak için CSS selectors (tercih edilir) ve temel XPath ifadeleri kullanma. BS4 ile entegrasyon (
.select()
).
Veri Çıkarma (Data Extraction)
- Metin, attribute'lar (
href
,src
) çıkarma ve ayrıştırıcı içinde temel veri temizleme işlemlerini yapma.
Veriyi Basitçe Saklama
- Çıkarılan verileri CSV ve JSON dosyalarına kaydetme.
Uygulama Lab 1: Statik Bir Blog Sitesini Kazıma
- Hedef: Basit bir statik blog web sitesi (örneğin, toscrape.com'un blog bölümü veya benzer bir demo site).
requests
kullanarak ana blog sayfasının HTML'ini çekme.- Beautiful Soup ve CSS selectors kullanarak ana sayfada listelenen her blog gönderisinin başlığını, yazarını, yayın tarihini ve linkini çıkarma.
- Olası eksik elementleri zarifçe ele alma (örneğin, bir yazar eksikse).
- Çıkarılan veriyi yapılandırılmış bir CSV dosyasına kaydetme.
Kazıma Frameworklerine Giriş: Scrapy
Framework Kullanmanın Faydaları
- Ölçeklenebilirlik (scalability), eşzamanlılık (concurrency), yerleşik özellikler.
Scrapy Mimarisine Genel Bakış
- Spiders, Items, Pipelines, Middlewares, Engine, Scheduler, Downloader. Asenkron doğası (Twisted'a giriş).
Scrapy Projesi Oluşturma
- Proje yapısı,
settings.py
dosyası.
Spider Yazma
- Spider sınıflarını tanımlama,
start_requests
,parse
metodu. Request ve item yield etme.
Scrapy'de Selector Kullanımı
response.css()
,response.xpath()
.
Item Tanımlama
- Yapılandırılmış veri için
scrapy.Item
veya dictionary kullanma.
Sayfalamayı (Pagination) Ele Alma
- Birden fazla sayfayı kazımak için linkleri takip etme.
Temel Veri Dışa Aktarma
- Scrapy'nin yerleşik feed export araçlarını kullanma (JSON, CSV).
Uygulama Lab 2: Bir Scrapy Spider'ı Oluşturma
- Hedef: Çok sayfalı statik bir e-ticaret sitesi veya alıntı listeleme sitesi (örneğin, quotes.toscrape.com).
- Yeni bir Scrapy projesi oluşturma.
- İlk sayfadan belirli verileri (örneğin, alıntı metni, yazar, etiketler) çıkarmak için bir Spider yazma. Veri için bir Scrapy Item tanımlama.
- "Next" linklerini takip ederek tüm sayfalardan veri kazımak için pagination mantığını uygulama.
- Spider'ı çalıştırma ve toplanan veriyi Scrapy'nin komut satırı araçlarını kullanarak bir JSON dosyasına aktarma.
Dinamik Web Sitelerini Headless Tarayıcılarla Ele Alma (Playwright Odaklı)
Geleneksel Yöntemlerin Neden Başarısız Olduğunu Anlama
- Dinamik sitelerde geleneksel yöntemlerin neden yetersiz kaldığını anlama, Playwright kullanarak headless tarayıcı otomasyonu temellerini öğrenme.
JavaScript'in Yükselişi
- SPA'lar (React, Vue, Angular), dinamik içerik yükleme (AJAX/XHR/Fetch).
Statik Kazımanın Neden Başarısız Olduğu
- İçeriğin başlangıç HTML kaynağında olmaması.
Headless Tarayıcılara Giriş
- Ne oldukları, neden çalıştıkları.
Playwright Derinlemesine İnceleme (SOTA Seçimi)
Mimari & Avantajları (Puppeteer/Selenium'a göre)
- Çapraz tarayıcı (Cross-browser), Dil desteği, Otomatik bekleme (Auto-waiting).
Kurulum ve Ayarlama (Python)
- Python için kurulum.
Temel Kullanım
- Tarayıcıları başlatma (headless/headed), context/page oluşturma, gezinme (
goto
).
Elementleri Bulma
page.locator()
, CSS/XPath selectors.
Elementlerle Etkileşim
click()
,fill()
,press()
.
Bekleme Stratejileri
- Playwright'in otomatik beklemesi (auto-waiting) vs açık beklemeler (
wait_for_selector
,wait_for_load_state
).
Render Edilmiş Veriyi Çıkarma
inner_text()
,get_attribute()
.
Uygulama Lab 3: JavaScript ile Render Edilen Bir Siteyi Kazıma
- Hedef: Verinin ilk sayfa yüklemesinden sonra JavaScript aracılığıyla dinamik olarak yüklendiği bir demo web sitesi (örneğin, basit bir SPA veya "Daha Fazla Yükle" butonu olan bir site).
- Hedef sayfaya gitmek için Playwright kullanan bir Python script'i yazma.
- Dinamik içeriğin görünmesini beklemek için mantık uygulama (otomatik bekleme veya açık beklemelerden yararlanarak).
- Dinamik olarak yüklenen veri öğelerini bulma ve çıkarma.
- Çıkarılan veriyi yazdırma veya kaydetme. Başlangıç HTML kaynağını Playwright aracılığıyla erişilebilen render edilmiş DOM ile karşılaştırma.
Gelişmiş Tarayıcı Otomasyonu & Ağ Trafiği Yakalama (Network Interception)
Gelişmiş Playwright Özellikleri
- Karmaşık etkileşimler ve verimli kazıma için gelişmiş Playwright özelliklerinde ustalaşma.
Network Interception
- İstekleri izleme (
page.on('request')
), kaynakları engelleme (resimler, CSS), API yanıtlarını (XHR/Fetch) yakalama - genellikle HTML ayrıştırmaktan daha verimlidir.
Pop-up'lar, Dialog'lar ve Yeni Sekmelerle Başa Çıkma
Cihaz Emülasyonu & Coğrafi Konum Sahteciliği (Geolocation Spoofing)
Ekran Görüntüsü ve PDF Alma
Oturum Açma (Login) ve Oturumları (Sessions) Yönetme
- Depolama durumunu (storage state) kullanma (
page.context.storage_state()
).
Paralel Çalıştırma (Kısa Konsept)
Playwright'i Scrapy ile Entegre Etme
- Örneğin,
scrapy-playwright
kullanma.
Uygulama Lab 4: API Yakalama & Login Simülasyonu
- Hedef: Veri yüklemek için API çağrıları kullanan ve basit bir login formuna sahip bir demo site (güvenli, amaca yönelik demo siteleri kullanın).
- Bir XHR/Fetch isteği aracılığıyla veri yükleyen bir sayfaya gitmek için Playwright kullanma. Ağ trafiğini yakalama (Intercept network traffic), ilgili API çağrısını belirleme ve yapılandırılmış veriyi doğrudan JSON yanıtından çıkarma.
- (Ayrı bir demo login sitesinde) Playwright kullanarak login işlemini otomatikleştirme (
fill
,click
). - Login işleminden sonra tarayıcının depolama durumunu (cookies, local storage) kaydetme.
- Yeni bir tarayıcı context'i başlatma, kaydedilen durumu yükleme ve oturumun aktif olduğunu doğrulamak için korumalı bir sayfaya gitme.
Anti-Scraping Önlemlerinden Kaçınma Temelleri
Web Sitelerinin Neden Kazıyıcıları Engellediği
- Sunucu yükü, veri koruma, rekabet avantajı.
Yaygın Tespit Yöntemleri
- IP adresi takibi, hız sınırlaması (rate limiting), User-Agent filtreleme, temel header kontrolleri.
IP Rotasyon Stratejileri
Proxy Türleri Hiyerarşisi
- Datacenter vs. Residential vs. Mobile vs. ISP (Artıları/Eksileri, Kullanım Alanları - Ref Tablo 2).
Rotasyon Nasıl Çalışır
- İstek başına, oturum başına ("sticky").
Proxy Sağlayıcıları Kullanma (Kavramsal: API'ler, Entegrasyon).
HTTP Header Yönetimi
- User-Agent'ları döndürme (gerçekçi string'ler), makul Accept-Language, Referer vb. ayarlama. Tutarlılık önemlidir.
Temel Hız Sınırlaması (Rate Limiting)
- Gecikmeler uygulama (
time.sleep
),robots.txt
Crawl-delay'e saygı gösterme.
Uygulama Lab 5: Temel Kaçınma Taktikleri
- Hedef: Varsayılan istek User-Agent'larını engelleyen veya basit hız sınırları uygulayan bilinen bir site (demo kullanabilir veya çok yavaş kazıma ile dikkatlice gerçek bir siteyi hedefleyebilirsiniz).
- Temel bir
requests
veya Scrapy kazıyıcısını, çeşitli, gerçekçi User-Agent string'leri listesini kullanacak ve bunları istek başına döndürecek şekilde değiştirme. - İstekler arasına rastgele gecikmeler uygulama (örneğin,
time.sleep(random.uniform(2, 5))
). - (Kavramsal veya Demo Proxy) İstekleri bir proxy üzerinden yönlendirmek için kod entegre etme (
requests
'inproxies
argümanını veya Scrapy middleware'ini kullanarak). Proxy listelerini/API'lerini nasıl yöneteceğinizi tartışma. - Bir hedef sitenin
robots.txt
dosyasını programatik olarak çekme ve izin verilmeyen yollar veya crawl delay'leri kontrol etme.
Gelişmiş Anti-Scraping & Gizlilik (Stealth) Teknikleri
Gelişmiş Tespit Yöntemleri
- Browser Fingerprinting (Canvas, WebGL, Audio, Fonts, TLS/JA3), JavaScript çalıştırma kontrolleri (
navigator.webdriver
), CDP tespiti.
Headless Tarayıcı Tespiti & Kaçınma
Gizlilik Eklentileri (Stealth Plugins)
puppeteer-extra-plugin-stealth
(konsept),playwright-stealth
(Python odaklı). Nasıl çalıştıkları (JS özelliklerini yamalama).
Tespit Edilemeyen ChromeDriver / Playwright Kavramları
Tarayıcı Başlatma Argümanları
- Örn:
--disable-blink-features=AutomationControlled
.
Davranışsal Taklit (Behavioral Mimicry)
- Fare hareketlerini, kaydırmayı, doğrusal olmayan etkileşimleri, gerçekçi zamanlamayı ("insan duraklamaları") simüle etme.
CAPTCHA Ele Alma Stratejileri (Ref Tablo 3)
Genel Bakış
- reCAPTCHA (v2, v3, Enterprise), hCaptcha, FunCAPTCHA, Turnstile.
Çözümleme Servisleri (Solving Services)
- API entegrasyon konsepti: 2Captcha, Anti-Captcha.
Yapay Zeka Çözümleme Servisleri (AI Solving Services)
- Konsept: CapSolver.
Güven Puanı İyileştirme (Trust Score Enhancement)
- Hedef: İyi fingerprint/proxy/davranış yoluyla CAPTCHA'dan kaçınma.
Ticari Anti-Detect Tarayıcılar & Scraping API'leri
- Kısa Bahsetme: Kameleo, ZenRows, ScrapingBee gibi soyutlama katmanları.
Uygulama Lab 6: Gizli Tarama (Stealth Browsing) & CAPTCHA Farkındalığı
- Hedef: Tespit test siteleri (örneğin, creepjs veya bot.sannysoft.com) ve potansiyel olarak Cloudflare/reCAPTCHA tarafından korunan bir site (mümkünse demo sürümlerini kullanın).
- Standart bir Playwright script'ini bir tespit sitesine karşı çalıştırma ve tanımlanan otomasyon işaretlerini gözlemleme.
playwright-stealth
'i script'e entegre etme ve tespit sitesine karşı yeniden çalıştırma. Tespit edilen özelliklerdeki farklılıkları analiz etme.- Bir Playwright script'i içinde temel insan benzeri gecikmeler ve rastgele fare hareketleri uygulama.
- (Kavramsal/Demo API) Bir demo CAPTCHA çözümleme servisi API'sine çağrı entegre etme, bir site anahtarı/resmi geçme ve bir token alma (API etkileşim modeline odaklanma). Bunun bir kazıma akışına ne zaman ve nasıl uyduğunu tartışma.
Kazımada Yapay Zeka (AI) & LLM'ler - Çıkarma & Analiz
Seçici (Selector) Tabanlı Kazımanın Sınırlılıkları
- Düzen (layout) değişikliklerine karşı kırılganlık.
Veri Çıkarma için LLM'ler
Konsept
- HTML/metni doğal dil istemleriyle (prompts) modellere (GPT-4, Claude, vb.) gönderme.
Çıkarma için Prompt Mühendisliği
- Zero-shot, few-shot, istenen çıktıyı belirtme.
Yapılandırılmış Çıktı (Structured Output)
- Güvenilir JSON/yapılandırılmış veri için JSON modu, fonksiyon çağırma (OpenAI), veya şemalarla (Pydantic/Zod konsepti) prompt kullanma.
Anlamsal Anlama (Semantic Understanding)
- Veriyi sadece tag'lere göre değil, anlama göre çıkarma (örneğin, "ana yazarı bul"). Küçük HTML değişikliklerine karşı dayanıklılık.
Görüntü-Dil Modelleri (Vision-Language Models)
- Kısa Konsept: Düzen farkındalığı olan (layout-aware) kazıma potansiyeli.
Araçlar & Kütüphaneler
- OpenAI API (veya benzeri) kullanma, zincirler oluşturmak için LangChain'den kısa bahsetme.
Uygulama Lab 7: LLM Destekli Veri Çıkarma
- Hedef: Önceki bir lab'da kazınan HTML içeriğini kullanma (örneğin, blog gönderisi, ürün sayfası).
- OpenAI API (veya başka erişilebilir bir LLM API/yerel model) kullanan bir Python script'i yazma.
- Sağlanan HTML içeriğinden belirli alanları (örneğin, ürün adı, fiyat, temel özellikler) çıkarmak için prompt'lar oluşturma.
- Doğruluğu artırmak için prompt varyasyonları ile deney yapma.
- Tutarlı yapılandırılmış JSON verisi elde etmek için LLM'in özelliklerini (örneğin, JSON modu) kullanma veya çıktıyı sonradan işleme. Bu HTML parçası için orijinal seçici tabanlı yaklaşımla kolaylığı/sağlamlığı karşılaştırma.
Kazımada Yapay Zeka (AI) & LLM'ler - Otomasyon & Doğrulama
Kazıyıcı (Scraper) Üretimi için Yapay Zeka
Konsept
- URL + prompt'tan kazıyıcı kodu (selectors, logic) üreten araçlar.
Araçlara Genel Bakış
- ScrapeGraphAI, Firecrawl, AutoScraper konsepti gibi kütüphanelerden bahsetme. Sınırlılıkları tartışma (maliyet, doğruluk, doğrulama ihtiyacı).
Akıllı Veri Sınıflandırma & Doğrulama
Temel Kontrollerin Ötesi
- Anlamsal doğrulama, anomali tespiti için yapay zeka kullanma.
Doğrulama için NLP
- Yorumlarda duygu analizi (sentiment analysis), varlık doğrulaması için NER (Named Entity Recognition).
Doğrulama Kütüphanelerine Genel Bakış (Konseptlere odaklan, bir pratik):
- Evidently AI (drift/izleme), Great Expectations (veri sözleşmeleri), Pydantic (şema doğrulama), Cleanlab (sorunları bulma).
Veri Zenginleştirme için Yapay Zeka
- Kazınan metin üzerinde özetleme, çeviri, konu modelleme (topic modeling).
Uygulama Lab 8: Veri Doğrulama & Zenginleştirme için Yapay Zeka
- Hedef: Önceki lab'lardan veya sağlanan veri setlerinden kazınmış verileri (örneğin, ürün yorumları, makale metni) kullanma.
- (Doğrulama) Beklenen kazınmış veriniz için bir şema tanımlamak ve birkaç kaydı doğrulamak üzere Pydantic kullanma.
- (Doğrulama/Sınıflandırma) Bir NLP kütüphanesi (NLTK VADER veya model içeren spaCy gibi) veya bir LLM prompt'u kullanarak kazınmış yorum metnine temel duygu analizi uygulama.
- (Zenginleştirme) Kazınmış bir makalenin kısa bir özetini veya kazınmış yorumlardan artı/eksi listesi oluşturmak için bir LLM API kullanma.
- (Üretim Konsepti) Temel bir kazıma grafiği/kodu oluşturmak için ScrapeGraphAI gibi bir aracı basit bir prompt ile çalıştırmayı kısaca gösterme (girdi/çıktı konseptine odaklanma).
Ölçeklenebilir Kazıma Sistemleri Mimarisi
Ölçek Zorlukları
- Hacim, frekans, performans darboğazları.
Bulut Tabanlı (Cloud-Native) Yaklaşımlar
Sunucusuz (Serverless - FaaS)
- AWS Lambda, Google Cloud Functions: Artıları/Eksileri, kullanım alanları (olay güdümlü, zamanlanmış).
Konteynerler (Containers)
- Docker, Kubernetes/ECS/Fargate: Kazıyıcıları paketleme, dağıtımları yönetme.
Dağıtık Mimari İlkeleri
- Ayrıştırma (Decoupling), iş dağıtımı, yük dengeleme (load balancing).
Görev Kuyruk Sistemleri (Task Queuing Systems) (Ref Tablo 4)
Kuyruklara Neden İhtiyaç Duyulur
- Görevleri yönetme, yeniden denemeler (retries), ayrıştırma.
Celery
- Derinlemesine inceleme (mimari, broker'lar - Redis/RabbitMQ, worker'lar, Beat scheduler, Flower izleme).
RQ (Redis Queue)
- Daha basit bir alternatif.
Kafka
- Ne zaman kullanılır (olay akışı - event streaming vs. görev kuyruğu).
Yüksek Hacim için En İyi Uygulamalar
- Hız sınırlaması koordinasyonu, sağlam hata işleme (yeniden denemeler, dead-letter kuyrukları), izleme/günlükleme (monitoring/logging). Headless tarayıcı çiftlikleri (headless browser farms) (konsept).
Uygulama Lab 9: Celery/RQ ile Dağıtık Görev İşleme
- Hedef: URL kazıma görevlerini dağıtmayı simüle etme.
- Redis'i yerel olarak kurma.
- Bir Celery veya RQ kuyruğuna birden fazla URL (örneğin, quotes.toscrape.com sayfalarından) ekleyen basit bir "üretici" (producer) script'i uygulama.
- Bir URL alan, basit bir simüle edilmiş kazıma (örneğin,
requests.get
+time.sleep
) gerçekleştiren ve sonucu yazdıran/loglayan bir Celery/RQ "işçi" (worker) fonksiyonu uygulama. - Birden fazla işçi örneğini eşzamanlı olarak çalıştırma (ayrı terminallerde) ve görevlerin nasıl dağıtıldığını ve işlendiğini gözlemleme. Bir görevde simüle edilmiş bir hata tanıtarak yeniden deneme davranışını görme (eğer yapılandırılmışsa).
Modern Veri İşleme, Temizleme & Doğrulama
Depolama Stratejileri Yeniden Ziyaret
- Kazınmış veriler için SQL vs. NoSQL (kullanım senaryosu karşılaştırması). Performans için indeksleme (indexing). Veri arşivleme konseptleri.
Gelişmiş Veri Temizleme
Pandas Gücü
- Eksik verilerle başa çıkma (doldurma - imputation, silme), tekilleştirme (deduplication), veri tipi dönüştürme, string manipülasyonu, standardizasyon.
Karmaşık Desen Temizliği için Regex Kullanma
Veri Kalitesi & Doğrulama Frameworkleri
Neden Doğrulamalı?
- Sonraki kullanım için güvenilirliği sağlama (analiz, ML).
Great Expectations
- Beklentileri (expectations) tanımlama, veri belgeleri (data docs) oluşturma, doğrulama kontrol noktalarını (validation checkpoints) çalıştırma.
Evidently AI
- Veri kayması tespiti (data drift detection) ve model izleme konsepti (ML modellerini besliyorsa ilgili).
Pydantic
- Çalışma zamanında şemaları zorlama.
Veri İş Akışlarını (Data Pipelines) Uygulama
- Kazıma sonrası temizleme ve doğrulama adımlarını otomatik olarak entegre etme.
Uygulama Lab 10: Kazınmış Veriyi Temizleme ve Doğrulama
- Hedef: Eksik değerler, kopyalar, tutarsız formatlar ve aykırı değerler içeren gerçek dünya kazınmış verilerini simüle eden dağınık bir veri seti (sağlanan CSV/JSON).
- Veriyi bir Pandas DataFrame'e yükleme.
- Temizleme işlemleri gerçekleştirme: Eksik değerleri ele alma (örneğin, sayısalı medyanla doldurma, eksik kritik bilgi içeren satırları düşürme), tam kopyaları kaldırma, tarih formatlarını standartlaştırma, metin alanlarını temizleme (örneğin, boşlukları kırpma, büyük/küçük harf dönüştürme).
- Great Expectations'ı entegre etme: Bir GE projesi başlatma, temizlenmiş veri için bir Expectation Suite oluşturma (örneğin,
expect_column_values_to_not_be_null
,expect_column_values_to_be_unique
,expect_column_values_to_be_in_set
). - Doğrulama kontrol noktasını (validation checkpoint) çalıştırma ve Data Docs raporunu inceleme.
Hukuki & Etik Ortamda Gezinme (2025)
Bu çok önemlidir.
- Yasal kısıtlamaları, etik değerlendirmeleri ve sorumlu kazıma için en iyi uygulamaları anlama.
Anahtar Mevzuat Özeti
- CFAA (HiQ vs. LinkedIn etkisi - kamuya açık veri), GDPR/CCPA (kişisel veri odağı), Telif Hakkı Yasası (içerik sahipliği).
Web Sitesi Politikalarını Anlama
- Hizmet Şartları (ToS) (sözleşme ihlali vs. CFAA),
Robots.txt
(yönergelere saygı). Erişim Kontrolleri (asla login/ödeme duvarlarını aşmayın).
Etik En İyi Uygulamalar Kontrol Listesi
- Yalnızca Kamuya Açık Veriyi Önceliklendirin.
- Politikaları İnceleyin ve Saygı Gösterin (ToS,
Robots.txt
). - KİŞİSEL VERİLERDEN KAÇININ (veya aşırı dikkat ve yasal dayanakla işleyin).
- Nazikçe Kazıyın (Hız sınırlayın, yoğun olmayan saatlerde).
- Botunuzu Tanımlayın (User-Agent).
- Mevcutsa API'leri Tercih Edin.
- Saklanan Veriyi Güvence Altına Alın.
- Şeffaflık & İletişim (uygun olduğunda).
- Karmaşık Durumlar İçin Hukuki Danışmanlık Alın.
Uyumsuzluğun Sonuçları
- Yasal işlem, yasaklamalar, itibar zararı.
Gelişen Manzara
- Yapay zeka eğitim verisi endişeleri, platform davaları.
Uygulama Lab 11: Uyumluluk Kontrolü & Etik Senaryo Analizi
- 2-3 farklı gerçek dünya web sitesi seçme (örneğin, haber sitesi, e-ticaret platformu, kamu veri portalı).
robots.txt
dosyalarını bulma ve analiz etme. İzin verilen/verilmeyen yolları ve varsa crawl delay'leri belirleme.- Hizmet Şartlarını (Terms of Service) bulma. Otomatik erişim, kazıma, veri kullanımı veya fikri mülkiyet ile ilgili maddeleri gözden geçirme. Bulguları tartışma (uygulanabilirlik nüansları).
- Gruplar halinde birkaç varsayımsal kazıma senaryosunu tartışma (örneğin, kamuya açık ürün fiyatlarını kazıma vs. bir sosyal ağdaki kullanıcı profillerini kazıma vs. analiz için haber makalelerini kazıma). Modül içeriğine dayanarak yasal ve etik riskleri değerlendirme. Sorumlu kazıma başlatmak için kişisel bir kontrol listesi geliştirme.
Bitirme Projesi (Capstone) & Kapanış
Proje Planlama
- Kapsamı tanımlama, hedef veriyi belirleme, araçları seçme, zorlukları tahmin etme (dinamik içerik, anti-bot).
Geliştirme Zamanı
- Katılımcılar seçtikleri proje üzerinde bireysel veya küçük gruplar halinde çalışma. Eğitmen desteği ve Soru-Cevap.
Potansiyel Proje Fikirleri
- Dinamik bir e-ticaret sitesini ürün detayları, fiyatlar ve yorumlar için kazıma, sayfalamayı (pagination) ve olası temel anti-bot önlemlerini ele alma. Veriyi temizleme ve doğrulama.
- Bir iş ilanı panosu için kazıyıcı oluşturma, iş unvanlarını, şirketleri, lokasyonları ve açıklamaları Playwright ve potansiyel olarak sınıflandırma için bazı temel NLP/AI kullanarak çıkarma.
- Scrapy/Playwright kullanarak belirli anahtar kelimeler için bir dizi haber web sitesini izleme, sonuçları saklama ve temel değişiklik tespiti uygulama (Git Scraping konseptiyle ilgili).
Kod İnceleme & Sunum
- Katılımcılar projelerini sunma, karşılaşılan zorlukları, çözümleri ve etik değerlendirmeleri tartışma.
Eğitim Kampı Değerlendirmesi & Sonraki Adımlar
- Anahtar becerileri özetleme, sürekli öğrenme için kaynaklar, veri mühendisliği/analizi/ML alanlarındaki kariyer yolları.
Uygulama Lab 12: Bitirme Projesi Uygulaması
- Katılımcıların Modül 1-11'deki teknikleri uygulayarak bitirme projelerini oluşturmaları için ayrılmış zaman. Odak noktası, birden fazla konsepti entegre etmektir (örneğin, dinamik içerik için Playwright, temel kaçınma, Pandas ile veri temizleme, Great Expectations/Pydantic ile doğrulama, sonuçları saklama, etiği göz önünde bulundurma).
Kurs Açıklaması
Kursun Amacı
Bu eğitim kampının sonunda katılımcılar:
- Statik ve dinamik verileri etkin şekilde toplayabilecek: Python ile Beautiful Soup, Scrapy ve Playwright kullanarak her türlü web kaynağından güvenilir biçimde veri elde edecek.
- Ölçeklenebilir kazıma projeleri tasarlayabilecek: Scrapy’nin mimarisini ve Celery/RQ gibi dağıtık görev kuyruklarını kullanarak büyük hacimli iş akışlarını yönetecek.
- Anti‑bot önlemlerini aşabilecek: IP rotasyonu, rastgele User‑Agent, stealth plugin’ler ve davranışsal taklit yöntemleriyle engelleme ve tespit sistemlerinden kaçınmayı öğrenecek.
- Veriyi temizleyip doğrulayabilecek: Pandas ile gelişmiş veri temizleme, Great Expectations ve Pydantic ile kalite kontrolü ve şema doğrulama uygulayacak.
- LLM destekli çıkarım & zenginleştirme yapabilecek: Web’den çekilen ham içerikleri GPT-4 veya benzeri modellerle yapılandırılmış JSON’a dönüştürüp özetleme ve sınıflandırma işlemleri gerçekleştirecek.
- Yasal ve etik sınırlar içinde çalışacak: CFAA, GDPR/CCPA ve sitelerin ToS kurallarına uygun, sorumlu ve şeffaf web kazıma pratikleri geliştirecek.
- Uçtan uca bir proje yürütebilecek: Bitirme projesi kapsamında veri toplama, işleme, doğrulama ve raporlama adımlarını birleştirerek gerçek dünyaya hazır bir kazıma çözümü oluşturacak.
Bu amaçlar, kurs boyunca gerçekleştirilecek uygulamalı laboratuvarlar ve gerçek dünya senaryoları ile pekiştirilecek; katılımcılar her adımda “neden” ve “nasıl” sorularına cevap bularak uzmanlaşacak.