Web Scraping (Veri Kazıma) Nedir?

Web scraping, bir sayfadaki bilgiyi otomatik olarak okuyup düzenli veriye çevirmektir. Nasıl çalıştığını, nerede işe yaradığını ve uyulması gereken sınırları anlatıyoruz.

Yazı

İnternetteki bilginin büyük bölümü insanların okuması için tasarlanmıştır. Bir ürün sayfasına baktığınızda fiyatı, stok durumunu ve açıklamayı bir bakışta ayırt edersiniz; çünkü göz, düzeni ve yazı boyutunu yorumlar. Bilgisayar için ise aynı sayfa yalnızca bir metin yığınıdır. Web scraping, yani veri kazıma, bu yığından anlamlı bilgiyi çekip düzenli bir tabloya dönüştürme işidir. Türkçede “veri kazıma” ya da “web kazıma” olarak geçer. Bu yazıda scraping in nasıl çalıştığını, hangi durumlarda doğru araç olduğunu ve hangi sınırlara dikkat edilmesi gerektiğini teknik olmayan bir dille anlatacağız. Web scraping tam olarak ne yapar? Bir web sayfası aslında etiketlerle işaretlenmiş bir metin belgesidir. Tarayıcınız bu etiketleri okuyup size güzel bir görüntü sunar; başlık büyük, fiyat kalın, açıklama alt satırda görünür. Scraping yapan bir program ise görüntüyle ilgilenmez, doğrudan etiketlerin arasına bakar ve “fiyat şu etiketin içinde yazıyor” bilgisine göre değeri alır. Yani scraping, sayfayı insan gibi görmek yerine belgeyi olduğu gibi okumaktır. Bu yüzden bir sayfanın görünümü değişmese bile arka plandaki yapısı değiştiğinde scraping bozulabilir; tersine, görünüm tamamen yenilenip yapı korunduğunda hiçbir şey olmaz. Sürecin çıktısı genellikle bir tablodur. Yüz farklı ürün sayfasından toplanan başlık, fiyat, stok ve tarih bilgisi tek bir dosyada yan yana gelir. Asıl değer de burada ortaya çıkar. Tek bir sayfaya bakarken göremediğiniz şey, yüz sayfayı yan yana koyduğunuzda belirginleşir: fiyatların hangi aralıkta toplandığı, hangi ürünlerin sürekli stok dışı olduğu, bir kategoride kaç yeni ilan açıldığı. Scraping in amacı veri toplamak değil, dağınık bilgiyi karşılaştırılabilir hale getirmektir. Bu ayrımı gözden kaçıranlar genellikle çok veri toplayıp hiçbir sonuca varamazlar. İstek: Program, tıpkı tarayıcı gibi sayfayı sunucudan ister. Alma: Sunucu sayfanın ham halini gönderir. Ayrıştırma: Program etiketlerin arasından istenen alanları bulup çıkarır. Temizleme: Fiyattaki para birimi, boşluklar ve gereksiz karakterler ayıklanır. Kaydetme: Sonuç tabloya, dosyaya ya da veritabanına yazılır. Nerede işe yarar, nerede gereksizdir? Scraping in en güçlü olduğu yer, bilginin herkese açık olduğu ama derli toplu sunulmadığı durumlardır. İlan siteleri, ürün listeleri, kamuya açık duyuru sayfaları buna örnektir. Bilgi oradadır, kimseden gizli değildir, ama yüz sayfayı elle gezip not almak insanı bitirir. Buna karşılık aynı veriyi bir API üzerinden düzenli biçimde alabiliyorsanız scraping gereksizdir ve hatta yanlış tercihtir. API varken scraping kullanmak, açık kapı dururken pencereden geçmeye benzer: daha zahmetli, daha kırılgan ve genellikle karşı tarafın da hoşuna gitmeyen bir yol. Durum Doğru yöntem Neden Site resmi API sunuyor API kullanın Daha kararlı, daha hızlı, kurallara uygun Veri yalnızca sayfada görünüyor Scraping düşünülebilir Başka erişim yolu yok Veri indirilebilir dosya olarak var Dosyayı indirin En az yük, en yüksek doğruluk Giriş gerektiren özel alan İzinsiz erişmeyin Kural ve hukuk sorunu doğurur Kişisel veri içeriyor Önce hukuki değerlendirme KVKK kapsamına girebilir Hız, en sık yapılan hatadır Yeni başlayanların çoğu mümkün olan en hızlı biçimde veri çekmeye çalışır. Bu hem karşı sunucuya gereksiz yük bindirir hem de sizi engellenme riskine sokar. İnsan hızına yakın, istekler arasında bekleme olan bir kurulum neredeyse her zaman daha uzun ömürlüdür. Aceleyle toplanan veri, iki gün sonra hiç toplanamayan veriye dönüşür. Scraping neden sık sık bozulur? Scraping in en zayıf noktası, karşı tarafın yapısına bağımlı olmasıdır. Siteyi işleten kişi size haber vermek zorunda değildir; bir gün sayfa düzenini değiştirir ve sizin kurduğunuz her şey sessizce boş sonuç döndürmeye başlar. Bu sessizlik en tehlikeli kısımdır çünkü hata mesajı almazsınız, sadece veri gelmez. Bu yüzden ciddi bir kurulumda mutlaka “bugün beklenenden az kayıt geldi” gibi bir kontrol bulunmalıdır. Bizim ölçümümüzde uzun süre çalışan kurulumlarda bakım ihtiyacı doğuran en yaygın sebep bu tür yapı değişiklikleridir; ikinci sırada ise engellenme ve hız sınırları gelir. Sayfa yapısı değişir, alanlar bulunamaz hale gelir. Site otomatik erişimi kısıtlar ya da doğrulama ekranı gösterir. Sayfalama mantığı değişir, ikinci sayfadan sonrası alınamaz. İçerik sayfa açıldıktan sonra yükleniyorsa ham metinde görünmez. Aynı ürün farklı sayfalarda farklı biçimde yazıldığı için veri tutarsızlaşır. Kurallar, sınırlar ve nezaket Web scraping tek başına yasa dışı bir faaliyet değildir, ama sınırsız da değildir. Üç ayrı katman vardır ve bunları karıştırmamak gerekir. Birincisi sitenin kendi kurallarıdır: kullanım şartları ve robots dosyası, otomatik erişime dair beklentileri anlatır. İkincisi teknik sınırlardır: istek hızı, eşzamanlı bağlantı sayısı, engelleme mekanizmaları. Üçüncüsü ise hukuki çerçevedir; özellikle toplanan veri kişisel veri niteliği taşıyorsa KVKK kapsamına girersiniz ve veriyi neden topladığınızı, ne kadar saklayacağınızı açıklayabilmeniz gerekir. Bu üçü birbirinin yerine geçmez; birine uymak diğerini geçersiz kılmaz. Toplayabiliyor olmanız toplamanız gerektiği anlamına gelmez. En iyi scraping kurulumu, ihtiyacı olan en az veriyi, en yavaş kabul edilebilir hızda alan kurulumdur. Pratikte iyi bir yaklaşım şudur: yalnızca gerçekten kullanacağınız alanları toplayın, verileri gereğinden uzun saklamayın ve kimliğinizi gizlemeye çalışmayın. Karşı tarafın sizi tanıyabilmesi, bir sorun çıktığında konuşulabilmesi anlamına gelir ki bu genellikle iki taraf için de daha iyidir. Ayrıca topladığınız veriyi yeniden yayımlamak, kendi verinizmiş gibi sunmak ya da ticari olarak satmak tamamen ayrı bir konudur ve kendi başına değerlendirilmelidir. Veriyi kendi işinizde karar almak için kullanmakla, o veriyi yeniden dağıtmak arasında büyük fark vardır. Başlarken pratik öneriler İlk denemenizde tek bir sayfa ve tek bir alanla başlayın. Örneğin yalnızca bir ürünün fiyatını okuyup ekrana yazdırın. Bu kadar küçük bir hedef bile size çok şey öğretir: sayfanın nasıl yüklendiğini, verinin nerede durduğunu, biçimin nasıl temizlenmesi gerektiğini görürsünüz. Ancak bundan sonra sayıyı artırın. İkinci adımda on sayfa, üçüncü adımda sayfalama ekleyin. Her adımda sonucu gözle kontrol edin. Bu kademeli yol, doğrudan yüz sayfayla başlayıp neyin yanlış gittiğini anlayamamaktan çok daha hızlıdır. Son olarak topladığınız veriyi ilk günden itibaren tarihiyle birlikte kaydedin. Fiyat verisinin değeri, o anki değerinde değil zaman içindeki değişiminde saklıdır. Tarih olmadan kaydedilen veri, birkaç hafta sonra hiçbir soruya cevap veremez. Aynı şekilde her kaydın hangi adresten geldiğini de saklayın; bir veri şüpheli göründüğünde kaynağa geri dönebilmek, veri temizliğinin en temel gereğidir. Bu iki alışkanlık, scraping ile toplanan veriyi gerçekten işe yarar hale getiren en ucuz iki yatırımdır.

Sık sorulan sorular

Web scraping yasal mı?

Tek cümlelik bir cevabı yok. Herkese açık bir sayfadaki bilgiyi makul hızda okumak genellikle sorun oluşturmaz, ancak sitenin kullanım şartları otomatik erişimi yasaklıyorsa sözleşmesel bir ihlal doğar. Toplanan veri kişisel veri içeriyorsa KVKK yükümlülükleri devreye girer. Giriş gerektiren korumalı alanlara izinsiz erişim ise ayrı ve çok daha ciddi bir konudur.

Scraping ile API arasındaki fark nedir?

API, sitenin verisini paylaşmak için bilerek açtığı bir kapıdır; formatı bellidir, kuralları yazılıdır ve değişiklikler genellikle önceden duyurulur. Scraping ise insanlar için hazırlanmış sayfayı okumaktır ve karşı tarafın haberi olmayabilir. Bu yüzden API varken scraping tercih edilmemelidir; API daha kararlı, daha hızlı ve kurallara uygun bir yoldur.

robots.txt dosyası bağlayıcı mı?

robots.txt teknik olarak bir engelleme mekanizması değil, sitenin otomatik erişimden beklentisini belirttiği bir bildirimdir. Yani dosya sizi durdurmaz ama niyeti açıkça anlatır. Bu bildirime uymak hem iyi bir uygulamadır hem de bir anlaşmazlık durumunda tutumunuzu savunulabilir kılar. Kullanım şartlarıyla birlikte değerlendirilmesi gerekir.

Ne sıklıkla veri çekmek makul kabul edilir?

Evrensel bir rakam yok; ihtiyaç ve sitenin büyüklüğü belirleyici. Genelde işe yarayan yaklaşım, gerçekten ihtiyaç duyduğunuz tazelikten daha sık çekmemektir. Günlük karar veriyorsanız saatte bir çekmenin bir anlamı yoktur. İstekler arasında birkaç saniyelik bekleme bırakmak ve yoğun saatlerden kaçınmak da hem karşı tarafı hem sizi rahatlatır.

Toplanan veriyi yayımlayabilir miyim?

Bu, veriyi toplamaktan tamamen ayrı bir sorudur. Kendi analiziniz için kullanmak ile veriyi yeniden yayımlamak veya satmak arasında hem hukuki hem etik açıdan büyük fark vardır. Telif, veritabanı hakları ve kişisel veri düzenlemeleri devreye girebilir. Yayımlamayı düşünüyorsanız içeriği olduğu gibi aktarmak yerine, kendi ürettiğiniz özet ve analizleri paylaşmak çok daha güvenli bir yoldur.

Scraping için programlama bilmem şart mı?

Kendi çözümünüzü yazacaksanız evet, temel düzeyde gerekir. Ancak hazır araçların bir kısmı, hangi alanı toplamak istediğinizi ekrandan seçmenize izin verir ve kod yazmadan çalışır. Bu araçlar basit sayfalarda oldukça iyi sonuç verir; sayfa yapısı karmaşıklaştıkça ya da veri sonradan yükleniyorsa teknik bilgi ihtiyacı artar.