Web Scraping (Web Kazıma)
Bireysel sayfadasınız. Kurumsal sayfaya geçebilirsiniz.
Renkler tuhaf mı görünüyor? Samsung Internet tarayıcısı koyu modda site renklerini değiştiriyor olabilir. Kapatmak için Internet menüsünden Ayarlar → Kullanışlı Özellikler → Labs → Web site koyu temasını kullan seçeneğini etkinleştirebilirsiniz.
Bireysel sayfadasınız. Kurumsal sayfaya geçebilirsiniz.
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.
Bu eğitim kampının sonunda katılımcılar:
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.
requests
kütüphanesini kullanma (GET/POST, headers, parameters). Durum kodlarını (status codes) ve hataları ele alma.find
, find_all
). Ayrıştırıcıları (parsers) anlama (lxml
, html.parser
)..select()
).href
, src
) çıkarma ve ayrıştırıcı içinde temel veri temizleme işlemlerini yapma.requests
kullanarak ana blog sayfasının HTML'ini çekme.settings.py
dosyası.start_requests
, parse
metodu. Request ve item yield etme.response.css()
, response.xpath()
.scrapy.Item
veya dictionary kullanma.goto
).page.locator()
, CSS/XPath selectors.click()
, fill()
, press()
.wait_for_selector
, wait_for_load_state
).inner_text()
, get_attribute()
.page.on('request')
), kaynakları engelleme (resimler, CSS), API yanıtlarını (XHR/Fetch) yakalama - genellikle HTML ayrıştırmaktan daha verimlidir.page.context.storage_state()
).scrapy-playwright
kullanma.fill
, click
).time.sleep
), robots.txt
Crawl-delay'e saygı gösterme.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.time.sleep(random.uniform(2, 5))
).requests
'in proxies
argümanını veya Scrapy middleware'ini kullanarak). Proxy listelerini/API'lerini nasıl yöneteceğinizi tartışma.robots.txt
dosyasını programatik olarak çekme ve izin verilmeyen yollar veya crawl delay'leri kontrol etme.navigator.webdriver
), CDP tespiti.puppeteer-extra-plugin-stealth
(konsept), playwright-stealth
(Python odaklı). Nasıl çalıştıkları (JS özelliklerini yamalama).--disable-blink-features=AutomationControlled
.playwright-stealth
'i script'e entegre etme ve tespit sitesine karşı yeniden çalıştırma. Tespit edilen özelliklerdeki farklılıkları analiz etme.requests.get
+ time.sleep
) gerçekleştiren ve sonucu yazdıran/loglayan bir Celery/RQ "işçi" (worker) fonksiyonu uygulama.expect_column_values_to_not_be_null
, expect_column_values_to_be_unique
, expect_column_values_to_be_in_set
).Robots.txt
(yönergelere saygı). Erişim Kontrolleri (asla login/ödeme duvarlarını aşmayın).Robots.txt
).robots.txt
dosyalarını bulma ve analiz etme. İzin verilen/verilmeyen yolları ve varsa crawl delay'leri belirleme.