Muhtemelen oldukça somut bir durumla karşı karşıyasınız. Rekabetçi fiyatlara, ilanlara, yorumlara, kataloglara, kamuya açık verilere veya dikey portalların içeriklerine ihtiyacınız var. Alternatifler neredeyse her zaman aynıdır: manuel kopyala-yapıştır, eksik dışa aktarımlar, sınırlı API’ler ya da şirket içindeki hiç kimsenin tutarlı bir şekilde toplayamadığı, sayfalara dağınık veriler.
İşte tam da bu noktada, Python ile geliştirilen bir web kazıyıcı, teknik bir alıştırma olmaktan çıkıp operasyonel bir varlık haline gelir. Web sayfalarından temiz veri kümelerine geçmek istediğinizde Python en pratik seçimdir; çünkü basit komut dosyalarıyla başlayıp daha sonra daha gelişmiş tarayıcılara, tarayıcı otomasyonuna ve analiz iş akışlarına doğru ilerlemenize olanak tanır.
İtalya bağlamında bu konu daha da önem kazanıyor. Python, otomasyon ve veri analizi alanlarında artık bir standart haline gelmiştir ve veri kazıma, şirketlerdeki en yaygın uygulamalardan biridir. Ancak asıl farkı yaratan, “verileri indiren” kişiler değildir. Asıl farkı yaratanlar, doğru kütüphaneyi seçebilen, klasik hatalardan kaçınabilen, GDPR ve kullanım koşullarına uyabilen ve işletmenin okuyup kullanabileceği verileri sunabilen kişilerdir.
Çoğu veri kazıma projesinin başlangıç noktası basit bir ihtiyaçtır. Bir rakibin fiyatlarını takip etmek, sektör portallarından başlıkları toplamak, bir ürün listesi oluşturmak, ihale duyurularını veya ilanları izlemek gibi. Sorun, verileri bulmak değildir. Asıl sorun, bu verileri tekrarlanabilir, hatasız ve karar alma süreçlerinde kullanılabilecek kadar güvenilir bir şekilde toplamaktır.
Python ile yazılmış bir web kazıyıcı tam da bu sorunu çözer. Bir sayfayı ziyaret etmenizi, içeriğini indirmenizi, yararlı öğeleri belirlemenizi ve bunları yapılandırılmış bir biçimde kaydetmenizi sağlar. Başlangıçta iyi bir iş çıkarırsanız, manuel ve hataya açık bir işi istikrarlı bir iş akışına dönüştürebilirsiniz.
Öğreticilerde genellikle atlanan kısım, asıl işin en önemli kısmıdır. Sadece “veri kazıma” yapmak yetmez. Doğru karmaşıklık düzeyini seçmelisiniz. Requests ve BeautifulSoup birçok site için yeterlidir. İçerik JavaScript ile oluşturulduğu için bazı siteler ise Selenium veya Playwright gerektirir. Daha büyük projelerde ise Scrapy devreye girer. Verilerde kişiler, profiller veya iletişim bilgileri yer alıyorsa, kesin bir yasal çerçeveye de ihtiyaç duyulur.
İyi bir veri kazıyıcı, en fazla veriyi toplayan değildir. En az bakım maliyetiyle doğru verileri toplayan veri kazıyıcıdır.

Python, pratik bir nedenden ötürü bu alanda hakimiyet kuruyor. Proje büyüdüğünde çok fazla ödün vermek zorunda kalmadan, bir fikirden çalışan bir komut dosyasına çok hızlı bir şekilde geçmenizi sağlıyor. İtalyan pazarında bu sadece teknik bir tercih değildir. Milano Politeknik Üniversitesi Dijital İnovasyon Gözlemevi'nin 2023 verilerine göre, Python, veri analizi ve otomasyonda İtalyan şirketlerinin %75'i tarafından benimsenmiştir ve web kazıma, başlıca uygulamalar arasında yer almaktadır. Aynı bağlamda, 2022'de Lombardiya'daki KOBİ'lerin %40' ı rakip fiyatlarını izlemek için Python kazıyıcıları kullanmaya başlamış ve perakende sektöründe rekabet gücü %25 artmıştır. Bu durum,Teksas Üniversitesi'nin Python ile kazıma konusunda hazırladığı referans sayfasında da belirtilmiştir.
Python'un en büyük gücü okunabilirliğidir. Bir iş arkadaşınıza bir komut dosyasını açıklamak, HTML seçicileri üzerinde hata ayıklama yapmak ya da iki hafta içinde veri çıkarma mantığını değiştirmek zorunda kalırsanız, kodun netliği sandığınızdan çok daha önemlidir.
İkinci güç ise ekosistemdir. İşin hemen hemen her aşaması için olgunlaşmış kaynaklar mevcuttur:
Çoğu yeni başlayan kişi bu konuda yanılıyor. Selenium'u gördüklerinde, bunun her zaman en iyi çözüm olduğunu düşünüyorlar. Öyle değil.
Statik bir sayfa için tam bir tarayıcı kullanmak, daha fazla kaynak tüketmek, daha yavaş kod yazmak ve arıza noktalarını artırmak anlamına gelir. Buna karşılık, verileri JavaScript aracılığıyla yükleyen bir sitede yalnızca Requests kullanmak, klasik bir sonuca yol açar: neredeyse boş bir HTML ve hiçbir yararlı veri.
Şu şekilde düşünmek daha mantıklıdır:
Pratik kural: Her zaman ihtiyacınız olan verileri gerçekten okuyabilen en basit aracı seçin.
Python'un bir başka avantajı da bu geçişin kademeli olmasıdır. Her seferinde her şeyi yeniden yazmanız gerekmez. Çoğu zaman ayrıştırma mantığını koruyarak sadece sayfayı alma yöntemini değiştirebilirsiniz.
Bir kitaplık seçmenin en yararlı yolu, “en iyisi hangisi” diye sormak değildir. Doğru soru şudur: Ne tür bir site okumalıyım, bu proje ne kadar sürmeli ve ne kadar bakım masrafını karşılayabilirim?

Unioncamere Lombardia’nın 2025 raporuna göre, Lombardiya’daki birçok teknoloji şirketi veri kazıma (scraping) için Python kullanıyor ve bu da bölgesel ekonomik değere önemli ölçüde katkıda bulunuyor. Aynı bağlamda, Scrapy'nin İtalyan geliştiriciler arasında %45 oran ında benimsenmiş olduğu ve Selenium'un JavaScript siteleriyle etkileşim gerektiren projelerin %55'inde kullanıldığı, ayrıca ScraperAPI'nin Python ile veri kazıma konusuna ayrılmış referans sayfasına göre, proxy ile birleştirildiğinde CAPTCHA engellerinde %90'lık bir azalma sağlandığı belirtilmektedir.
İçerik zaten başlangıç HTML'sinde mevcutsa, işinizi zorlaştırmayın.
Requests + BeautifulSoup, şu konularda hâlâ en mantıklı başlangıç noktasıdır:
Bu yığın, şu durumlarda çok kullanışlıdır:
Basit bir örnek:
import requests from bs4 import BeautifulSoup url = "https://example.com/news" response = requests.get(url, timeout=20) response.raise_for_status()soup = BeautifulSoup(response.text, "html.parser")for article in soup.select("article"):title = article.select_one("h2")link = article.select_one("a")if title and link:print(title.get_text(strip=True), link.get("href"))
Bu yaklaşım, veriler gerçekten HTML kaynağında olduğu sürece iyi sonuç verir. Kullanmadan önce, sadece “İnceleme”yi değil, “Sayfa kaynağını görüntüle”yi de açın. Kaynakta veri yoksa, Requests tek başına yeterli olmaz.
Asenkron yükleme, "daha fazla yükle" düğmeleri, sonsuz kaydırma, ön uç çerçeveleriyle oluşturulan içerikler veya zorunlu kullanıcı etkileşimleri görüyorsanız, HTML ayrıştırıcısı tek başına sorunu çözmez.
Bu durumlarda Selenium ve Playwright devreye girer.
Selenium, kararlı ve çok yaygın bir seçimdir. Aşağıdaki durumlarda kullanabilirsiniz:
Playwright, daha modern ve sade bir API sunma eğilimindedir. Eğer bugün başlıyorsanız, birçok ekip şu konularda daha basit bulmaktadır:
Gerçek bir ödün verme durumu: Tarayıcı otomasyonu daha fazla güç anlamına gelir, ancak aynı zamanda daha fazla bellek kullanımı, daha uzun süreler ve daha fazla bakım gerektirir.
Ağ trafiğinde bir JSON uç noktasını okuyabiliyorsanız, bunu yapın. Bu, tıklama ve kaydırma hareketlerini simüle etmekten neredeyse her zaman daha güvenilirdir.
Bir noktaya gelirsiniz ki, artık sadece “veri kazıma” yapmıyorsunuz. Bir süreç oluşturuyorsunuz.
İşte burada Scrapy ilginç hale geliyor. Daha basit olduğu için değil, daha iyi organize ettiği için:
Tekrarlayan mantıklarla çok sayıda kategori, sayfa veya alan adı üzerinde çalışmanız gerektiğinde bunu tavsiye ederim. Tek seferlik bir veri çıkarma işlemi için genellikle gereğinden fazladır. Ancak sürekli çalışan bir tarayıcı için, aksi takdirde ayrı komut dosyalarına dağıtacağınız bileşenleri yeniden yazmak zorunda kalmanızı önler.
Ayrıca karma bir mantık da uygulayabilirsin:
Kütüphaneİdeal Kullanım SenaryosuJavaScript YönetimiÖğrenme EğrisiHızİsteklerStatik sayfalar, API, hızlı prototiplerHayırDüşükYüksekBeautifulSoupBasit ve okunabilir HTML ayrıştırmaHayırDüşükOrtaSeleniumTarayıcı etkileşimi, formlar, tıklamalar, dinamik sitelerEvetOrtaDüşükPlaywrightModern dinamik siteler, daha sağlam beklentilerEvetOrtaOrtaScrapyBüyük ölçekli tarama, yapılandırılmış süreçlerYerel değil, genişletilmesi gerekirYüksekYüksek
Bir veri toplayıcının ilk sürümü birkaç şeyi iyi yapmalıdır. Bir sayfayı okumak. Doğru öğeleri bulmak. Metni temizlemek. Çıktıyı kullanışlı bir biçimde kaydetmek. Hepsi bu kadar.

Projeyi izole tutun. Sanal bir ortam, çakışmaları önler ve çalışmanın tekrarlanabilir olmasını sağlar.
Gerekli olan en azını yükleyin:
pip install requests beautifulsoup4
Temel başlangıç yapısı:
scraper.py kod içinçıktı.csv ihracat içinBasit bir şey gibi görünebilir, ancak kullandığınız seçicileri hemen belgelemek, site değiştiğinde size zaman kazandırır.
Hedef sayfayı tarayıcıda açın ve geliştirici araçlarını kullanın. İlgilendiğiniz veriyi gerçekten içeren düğümleri arayın.
Diyelim ki şunu çıkarmak istiyoruz:
Üç şeyi kontrol et:
Ön uç tarafından otomatik olarak oluşturulan sınıflar gibi kırılgan seçiciler seçmeyin. Mümkünse bir makale, bir h2 ya da tutarlı bir yapıya sahip bir alan seçerseniz, kazıyıcınızın ömrü daha uzun olur.
İşte tam ve anlaşılır bir örnek.
import csvimport requestsfrom bs4 import BeautifulSoupfrom urllib.parse import urljoinBASE_URL = "https://example.com"TARGET_URL = "https://example.com/news"headers = {"User-Agent": "Mozilla/5.0"}response = requests.get(TARGET_URL, headers=headers, timeout=20)response.raise_for_status()soup = BeautifulSoup(response.text, "html.parser")rows = []for card in soup.select("article"):title_el = card.select_one("h2")link_el = card.select_one("a")if not title_el or not link_el:continuetitle = title_el.get_text(strip=True)link = urljoin(BASE_URL, link_el.get("href", "").strip())if title and link:rows.append({"titolo": title,"url": link})with open("output.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=["titolo", "url"])writer.writeheader()writer.writerows(rows)print(f"Elementi estratti: {len(rows)}")
Python ile yazılacak ilk web kazıyıcı için bu yapı zaten fazlasıyla yeterli.
Akış doğrusal:
Verinin kalitesi burada belirlenir. En sık karşılaşılan sorunlar teknik değildir. Bunlar operasyonel sorunlardır:
CSV dosyasını göndermeden önce mutlaka açın. Dosya Excel'de açılacaksa, sütunların ve karakterlerin okunabilir olup olmadığını kontrol etmenizde fayda var. Bu adımda yardıma ihtiyacınız varsa, ELECTE Excel'de CSV dosyalarını yönetme ELECTE bu kılavuz işinize yarayabilir.
Hatalı bir CSV dosyası oluşturan bir veri toplayıcı, sorunu sonraki aşamaya aktarır. Sorunu çözmez.
Hemen uygulamaya başlayabileceğiniz iyi alışkanlıklar:
strip() metni temizlemek için.urljoin.raise_for_status().Sonuç size zayıf geliyorsa, öyledir. Yeni özellikler eklemeden önce temel aşamayı sağlamlaştırın.

Bir web kazıyıcı neredeyse boş bir sayfa döndürdüğünde, sorun genellikle Python'da değildir. Sorun, sitenin görüntüleme modelindedir. Birçok modern arayüz, ilk HTML kodundan sonra asenkron istekler veya JavaScript bileşenleri aracılığıyla verileri yükler. Requests, ilk belgeyi indirir. Tarayıcıyı çalıştırmaz.
Selenium veya Playwright'a geçmeden önce, geliştirici araçlarında hızlı bir kontrol yap:
Temiz ve okunaklı bir uç nokta bulursanız, bu genellikle en iyi yoldur. Daha yapılandırılmış veriler, daha az HTML gürültüsü ve daha az bakım gerektirir.
Bunun yerine, site içeriği gerçekten tarayıcıda oluşturuyorsa, tarayıcı otomasyonu kullanır. Bu durumda doğru bekleme süreleri gerekir. Doğru yaklaşım, “5 saniye bekle ve şansını dene” değildir. Doğru yaklaşım, öğenin ortaya çıkmasını veya gözlemlenebilir bir koşulun yerine getirilmesini beklemektir.
Birçok site, altyapısını, verilerini ve kullanıcı deneyimini korumak için agresif veri kazıma girişimlerini engeller. Çok fazla istek gönderirseniz, doğal olmayan başlıklar kullanırsanız veya tarayıcı oturumlarını tekrar tekrar açarsanız, site buna tepki gösterir.
En sık görülen hatalar her zaman aynıdır:
Profesyonel yaklaşım daha ölçülüdür:
Her bot önleme tedbirini teknik bir meydan okuma olarak görmemek gerekir. Site, veri kazımaya açıkça karşı çıkıyorsa, verinin gerçekten sürdürülebilir ve kurallara uygun bir şekilde elde edilip edilemeyeceğini değerlendirin.
Dayanıklı veri toplayıcılar geliştirmek, web sitesi ile olan sürtüşmeyi azaltmak anlamına gelir; sitenin savunma mekanizmalarına karşı bir yarış kazanmaya çalışmak değil.
Veri toplama projelerinde en çok göz ardı edilen nokta, ayrıştırıcı değildir. Asıl mesele sorumluluktur. İtalya bağlamında, veriler kişiler, mesleki profiller, özgeçmişler, iletişim bilgileri veya iş portallarından alınan bilgilerle ilgili olduğunda bu durum çok daha büyük önem kazanır.
AGID 2025 verilerine göre, birçok İtalyan KOBİ, AB verilerinin kazınmasıyla ilgili ihlaller nedeniyle para cezasına çarptırılmış olup, 2024-2025 yıllarında Lombardiya ve Veneto bölgelerinde önemli sayıda yaptırım uygulanmıştır. Aynı kaynakta, iş portallarından isimlerin kazınmasının, 196/03 sayılı Kanun Hükmünde Kararnamenin 167. maddesi uyarınca cezai riskler doğurabileceği belirtilmektedir. Bu uyarı, Real Python'un web kazıma konusunda hazırladığı pratik kılavuzda yer almaktadır.
Öncelikle bu yanlış anlaşılmayı gidermek gerekir. Bir verinin çevrimiçi olarak görünür olması, onu sınırsız bir şekilde toplayabileceğiniz, birleştirebileceğiniz, saklayabileceğiniz ve yeniden kullanabileceğiniz anlamına gelmez.
Ciddi bir işte en az dört unsur kontrol edilmelidir:
Onay, veri toplama ve mevzuata uygunluk konularında yolunuzu bulmak için, ELECTE çerezler ve çevrimiçi gizlilik, AB ve ABD mevzuatları, Google Onay Modu ve onay yönetimi ELECTE hazırladığı bu ayrıntılı inceleme de faydalı olacaktır.
Bir şirkette veri toplayıcı geliştirmek zorundaysanız, bu temel unsur tartışmaya açık değildir:
Burada mesele avukat olmak değil. Mesele profesyonelce çalışmak. İyi yazılmış bir web kazıyıcı sadece verimli olmakla kalmaz. Aynı zamanda savunulabilir de olur.
Birçok proje çok erken bir aşamada durur. Ekip veri kazıma işlemini gerçekleştirir, bir CSV dosyası kaydeder, belki de her hafta bir dosyayı günceller. Sonra süreç orada durur. Veri temizleme, geçmiş verilerle karşılaştırma, raporlama veya tahmin yapılmadıkça, elde edilen değer eksik kalır.
İşte önemli kısım şudur:
Perakende sektöründe çalışıyorsanız, bu, rakiplerin fiyatlarını ve promosyonlarını zaman içinde takip etmek anlamına gelebilir. Finans veya uyum alanında ise, denetimleri ve izleme listelerini kamuya açık kaynaklarla zenginleştirmek anlamına gelebilir. Pazarlama alanında ise, yorumlar ve editoryal içerikler, nitel sınıflandırmalara ve trend analizlerine katkı sağlayabilir.
Akış tekrarlayıcı hale geldiğinde, veri kazıma işlemini yerel bir dosya klasörüne değil, bir analiz sistemine bağlamak daha uygun olur. Dış kaynaklardan toplanan verileri daha geniş bir ekosisteme entegre etmesi gerekenler için, ELECTE doğrulanmış Postman profiliyle API üzerinden entegrasyonu nasıl ELECTE incelemek de faydalı olabilir.
Prensip basit. Veri kazıma, ham veriyi toplar. Değer ise bu ham veri bir karar verme sürecine girdiğinde ortaya çıkar.
İyi bir veri toplayıcı geliştirmek, ölçülü seçimler yapmak demektir. Doğru siteye uygun araç. Kararlı seçiciler. Temiz çıktı. Kontrollü istek sıklığı. Başlangıçtan itibaren yasal hususlara özen gösterilmesi.
İşte bu nedenle Python ile web kazıyıcı, analistler, dijital ekipler ve KOBİ'ler için en yararlı projelerden biri olmaya devam ediyor. Bu araç, yalnızca manuel veri aktarımlarına veya sınırlı entegrasyonlara bağlı kalmadan, web'i işlevsel bir veri kaynağına dönüştürmenizi sağlar.
Ancak asıl önemli olan veri toplama değil, verilerin kullanımıdır. Toplanan verileri raporlar, eğilimler, uyarılar ve geçmiş verilerle birleştirirseniz, veri kazıma artık teknik bir görev olmaktan çıkar ve karar alma sürecine somut bir destek haline gelir.
Verileri zaten topladınız. Bir sonraki adım, bunları net ve kullanışlı içgörülere dönüştürmektir. ELECTEile, KOBİ'ler için AI destekli veri analizi platformu, farklı kaynakları birbirine bağlayabilir, verileri daha hızlı hazırlayabilir ve işletmenin karar almasına gerçekten yardımcı olacak raporlar ve analizler elde edebilirsiniz. Ham verilerden daha hızlı karar almaya geçmek istiyorsanız, nasıl çalıştığını görmeye değer.