Sahibinden Data Scraping: Ham Kayıttan Güvenilir Veri Kümesine

Sahibinden data scraping işinin zor kısmı veriyi almak değil, alınan veriyi güvenilir hâle getirmektir. Toplama biterken elinizde satırlar vardır; analiz edilebilir bir veri kümesi ise ancak şema, normalizasyon, tekilleştirme ve eksik değer kararları verildikten sonra ortaya çıkar. Bu sayfa o hattı anlatıyor — toplama tarafı kardeş sayfada ayrıca ele alınıyor.

Sahibinden Pro — yıllık lisans ₺12.500 (KDV dahil). ₺300 karşılığı 1 günlük deneme lisansı alınabilir. Satın al: Sahibinden Pro

Veri kalitesi ölçülebilir bir şeydir: beş boyut

“Veri temiz mi” sorusu tek başına cevaplanamaz çünkü ölçüsü yoktur. Ölçülebilir hâle getirmek için beş boyuta ayırmak yeterlidir ve bu beşi her tarama sonunda sayı olarak üretebilirsiniz. Birincisi eksiksizlik: zorunlu saydığınız alanların kaç satırda dolu geldiği. Fiyat alanı satırların yüzde doksanında doluysa bu bilinen bir durumdur; yüzde kırkında doluysa bir sorun vardır. İkincisi tutarlılık: aynı anlamdaki değerlerin aynı biçimde yazılıp yazılmadığı. Konum alanında bir satırda ilçe, diğerinde mahalle varsa gruplama çalışmaz. Üçüncüsü doğruluk: değerin gerçekten sayfada yazan değer olup olmadığı. Bunu doğrulamanın en ucuz yolu örnekleme yapmaktır — rastgele beş satır seçip ilanı açıp gözle karşılaştırmak, hiçbir otomatik kontrolün yakalayamayacağı seçici kaymalarını yakalar. Dördüncüsü tazelik: kaydın hangi anda okunduğu. Tarihsiz veri karşılaştırılamaz, çünkü hangi fiyatın hangi haftaya ait olduğu bilinmez. Beşincisi tekillik: aynı ilanın kümede kaç kez geçtiği. Bu beş boyut ölçülmediğinde veri kalitesi bir his olarak kalır ve genellikle olduğundan iyi sanılır; ölçüldüğünde ise hangi alanın bakıma ihtiyacı olduğu ilk bakışta görünür.

Şema sözleşmesi: alan adı, tip, zorunluluk ve sürüm

Bir veri kümesini uzun ömürlü kılan şey içindeki satırlar değil, sütunlarının anlamının sabit kalmasıdır. Bunun için üç şeyi yazılı hâle getirmek gerekir. Birincisi alan adı ve anlamı: “fiyat” hangi para birimindedir, pazarlık payı içerir mi, ilanda yazan istenen fiyat mıdır? Bu tanımı yazmadığınızda altı ay sonra aynı sütunu farklı yorumlarsınız. İkincisi tip: fiyat sayı mı metin mi, tarih gerçekten tarih tipinde mi? Tip kararının en görünür sonucu şudur — metin olarak taşınan bir fiyat sütunuyla ortalama alamaz, sıralayamaz ve pivot kuramazsınız. Üçüncüsü zorunluluk: hangi alan boş olabilir, hangisi boşsa satır şüpheli sayılmalıdır. Bu üçü bir sözleşmedir; toplama katmanı bu sözleşmeye göre üretir, analiz katmanı bu sözleşmeye göre tüketir. Sözleşmeye bir de sürüm numarası eklemek işi rahatlatır: kategori setine yeni bir alan eklendiğinde ya da bir alanın anlamı değiştiğinde sürümü artırırsınız ve eski dosyaları yeni dosyalarla karıştırmadan önce hangi sürümde olduklarına bakarsınız. Sürümsüz birleştirilen iki dosya, çoğu veri hatasının kaynağıdır ve bu tür hatalar analiz aşamasında değil, karar aşamasında fark edilir.

Normalizasyon: fiyat, kilometre, tarih, konum, metin

Sayfada yazan değer ile analizde kullanılabilir değer nadiren aynıdır; aradaki dönüşüme normalizasyon denir ve alan bazında kuralı vardır. Fiyat en sık sorun çıkaran alandır: binlik ayracı, para birimi eki ve bazen aralık ifadesi içerir. Kural, ayraçları ve metin eklerini ayıklayıp sayıya çevirmek, para birimini ayrı bir sütunda tutmaktır. Kilometre ve metrekare benzer şekilde birim ekinden arındırılır; birimin kendisi sütun adında yaşamalıdır, hücrede değil. Tarih alanında yerel biçimler karışabilir; hepsini tek bir biçime çevirip gerçek tarih tipiyle saklamak sıralamayı mümkün kılar. Konum alanı en zorudur, çünkü hiyerarşiktir: il, ilçe ve mahalle tek bir metinde birleşik gelebilir. Bunları ayrı sütunlara açmak, bölge bazında gruplamayı mümkün kılan tek yoldur. Metin alanlarında ise iki basit kural çoğu sorunu çözer: baştaki ve sondaki boşlukları kırpmak ve satır sonlarını temizlemek — temizlenmemiş satır sonu, CSV çıktısında sütun kaymasının en yaygın sebebidir. Bütün bu dönüşümlerde tek bir ilke geçerlidir: ham değeri silmeyin. Normalize edilmiş sütunun yanında ham metni de saklarsanız, bir dönüşüm kuralı hatalı çıktığında veriyi yeniden toplamak zorunda kalmaz, sadece kuralı düzeltip yeniden üretirsiniz.

Tekilleştirme: aynı ilanı iki kez saymamak

Mükerrer kayıt, ortalamayı sessizce bozan hata türüdür; toplamı şişirir, fiyat dağılımını çarpıtır ve kimse fark etmez. Tekilleştirmenin dayanağı doğru anahtarı seçmektir. İlan numarası doğal anahtardır ve tek başına neredeyse her durumda yeterlidir. Başlık, fiyat ve tarih üçlüsüne dayalı bir anahtar kurmak cazip görünür ama yanlıştır: fiyat düzenlenir, başlık değiştirilir ve aynı ilan iki farklı kayıt gibi görünür. Buna karşılık iki farklı ilanın aynı başlık ve fiyata sahip olması hiç de nadir değildir; o durumda gerçekten farklı iki mal tek satıra iner ve veri kaybedersiniz. Bu yüzden birincil kural nettir: ilan numarası üzerinden tekilleştirin. İki zor durum kalır. Birincisi yeniden yayınlanan ilanlardır — aynı mal, yeni ilan numarası. Bunu kesin olarak çözmek mümkün değildir; pratikte konum, temel özellikler ve fiyat yakınlığına bakan bir benzerlik kontrolü aday çiftleri işaretler, kararı insan verir. Otomatik birleştirmek yerine işaretlemek doğru tercihtir, çünkü yanlış birleştirme geri alınamaz. İkincisi çapraz platform eşleştirmesidir: aynı malın farklı sitelerde ayrı numaralarla durması. Bu da benzerlik temelli ve olasılıklıdır; kesinlik iddiası taşımaz. Kurumsal kural olarak şunu benimseyin — otomatik silme yok, yalnızca işaretleme ve insan onayı.

Eksik ve şüpheli değer: silmek mi, işaretlemek mi?

Boş hücreyle karşılaşan çoğu kişinin ilk refleksi satırı silmektir; bu genellikle yanlıştır çünkü boşluğun kendisi bilgidir. Önce ayrım yapın: alan sayfada hiç yayınlanmamış mı, yoksa yayınlanmış da okunamamış mı? Birincisi normaldir — satıcı telefonunu ilana koymamışsa o alan zaten yoktur ve bunu bir kalite sorunu saymak yanlış alarm üretir. İkincisi ciddidir ve genellikle seçici sorununun ilk belirtisidir. İkisini ayırt edebilmek için “boş” ile “bulunamadı” durumlarının farklı işaretlenmesi gerekir; tek bir boş hücre ikisini de temsil ederse teşhis imkânsızlaşır. İkinci tuzak, boşluğu sıfırla doldurmaktır. Fiyatı bilinmeyen bir ilana sıfır yazmak, ortalamayı aşağı çeker ve hatayı veri kümesinin içine gömer; boş kalması her zaman daha dürüsttür. Üçüncüsü uç değerlerdir: bir konut için olağandışı düşük bir fiyat genellikle gerçek bir fırsat değil, ilana yanlış girilmiş bir rakam ya da farklı bir satış biçimidir. Uç değerleri otomatik silmek yerine işaretleyip gözle bakmak doğru yoldur. Genel ilke şudur: veri kümesinden bilgi çıkarmayın, bilgi ekleyin. Her satıra durum bilgisi eklemek dosyayı büyütür ama analiz sırasında “bu satıra güvenebilir miyim” sorusunu cevaplanabilir kılar.

Artımlı toplama ve değişim kaydı: fotoğraf mı, film mi?

Tek bir tarama, piyasanın o âna ait bir fotoğrafıdır ve tek başına sınırlı bilgi taşır. Asıl değer ardışık taramaların karşılaştırılmasından çıkar. Bunun için iki farklı saklama biçimini ayırmak gerekir. Birincisi anlık görüntüdür: her tarama kendi içinde bütün olarak saklanır ve o anki durumu temsil eder. Ürün bu modeli kullanır — yaptığınız her tarama ayrı bir görev olarak durur, kaç kayıt topladığı listede yazar ve haftalar sonra geri açılabilir. İkincisi değişim kaydıdır: iki anlık görüntü karşılaştırılıp yalnızca farklar tutulur. Fiyatı düşen ilanlar, yeni eklenenler ve listeden çıkanlar bu karşılaştırmadan doğar. Değişim kaydını üretmek için üç kural yeterlidir. Bir: karşılaştırma ilan numarası üzerinden yapılır. İki: her satırın hangi taramaya ait olduğu kayıtlı olmalıdır, aksi hâlde iki dosya birleştiğinde zaman bilgisi kaybolur. Üç: listeden çıkan ilan “satıldı” diye yorumlanmamalıdır — yayından kalkmanın birden fazla sebebi vardır ve bunu ayırt etmenin veri tarafında kesin bir yolu yoktur. Fiyat tarafında ayrıca ürünün kendi fiyat arşivi birikir; yani zaman serisini elde etmek için her şeyi elle kurmanız gerekmez, ama yorumu daima size aittir.

Dışa aktarım: Excel, CSV ve aşağı akış sistemleri

Veri kümesi ancak gideceği yere bozulmadan ulaştığında iş görür ve dışa aktarım katmanı tam olarak burada hata üretir. Excel çıktısı tip bilgisini koruyabildiği için analiz masasına en uygun biçimdir: sayı sayı, tarih tarih olarak gider ve dosyayı açar açmaz sıralama, filtreleme ve pivot çalışır. CSV ise daha taşınabilirdir ama tipsizdir — her şey metindir ve tipi okuyan taraf yorumlar. CSV kullanacaksanız üç ayrıntıya dikkat edin. Birincisi karakter kodlaması: Türkçe karakterlerin bozuk görünmesinin sebebi neredeyse her zaman dosyanın farklı bir kodlamayla açılmasıdır, veri değil okuma hatasıdır. İkincisi ayraç: virgül ile noktalı virgül arasındaki tercih, hedef sistemin bölge ayarına bağlıdır. Üçüncüsü tırnaklama: içinde ayraç ya da satır sonu geçen metin alanları tırnaklanmamışsa sütunlar kayar; ilan açıklamaları tam olarak bu riski taşır. Veriyi bir veritabanına ya da raporlama aracına besleyecekseniz doğrudan bağlantı yerine dosya üzerinden bir yükleme adımı kurulur; bu adımda tip dönüşümlerini bir kez tanımlayıp tekrar tekrar kullanmak, her seferinde elle düzeltmekten hem hızlı hem güvenlidir. Son bir not: paylaşacağınız dosyada kişisel veri niteliği taşıyan sütunlar varsa, paylaşmadan önce bunları ayıklamak sizin yükümlülüğünüzdür.

Her taramadan sonra bakılacak beş sayı

Kalite kontrolünü bir alışkanlığa çevirmenin en pratik yolu, dosyayı açar açmaz beş sayıya bakmaktır; hepsi bir dakikadan kısa sürer ve hatalı bir veri kümesiyle karar vermenizi engeller. Birinci sayı satır adedidir: beklediğiniz büyüklükte mi? Filtre aynıyken geçen haftaya göre yarıya inmişse toplama tarafında bir sorun var demektir. İkinci sayı benzersiz ilan numarası adedidir; satır sayısından belirgin biçimde küçükse mükerrer kayıt vardır. Üçüncü sayı zorunlu alanların doluluk oranıdır — özellikle fiyat ve konum. Dördüncü sayı fiyat sütununun en küçük ve en büyük değeridir; uç değerler çoğu zaman veri hatasının en hızlı göstergesidir, çünkü gerçek dışı bir rakam kendini hemen ele verir. Beşinci sayı tarih aralığıdır: kayıtların ilan tarihleri beklediğiniz pencerede mi, yoksa çok eski kayıtlar mı karışmış? Bu beşi geçtikten sonra rastgele üç satır seçip ilanı açıp gözle karşılaştırın; otomatik kontrollerin yakalayamadığı seçici kaymalarını yalnızca bu yakalar. Bu rutin kulağa fazla titiz gelebilir, ama alternatifi şudur: hatalı bir tabloya dayanarak alınan bir karar, o tabloyu üretmek için harcanan bütün zamandan çok daha pahalıya mal olur.

Sık sorulan sorular

Data scraping ile veri çekme arasında bir fark var mı?

Terim olarak ikisi de aynı işi anlatır; pratikte “data scraping” daha çok toplama sonrası veri hattını, yani kalite, şema ve dışa aktarım tarafını çağrıştırır. Bu sayfa o tarafı ele alıyor. Seçici, sayfalama ve hız limiti gibi toplama tarafındaki konular kardeş sayfada anlatılıyor.

Tekilleştirmeyi program mı yapıyor, ben mi?

Aynı tarama görevi içinde kayıtlar ilan numarasıyla ayrışır. Farklı zamanlarda alınmış iki dosyayı birleştirdiğinizde tekilleştirme sizin tarafınızdadır ve yine ilan numarası üzerinden yapılmalıdır. Yeniden yayınlanmış ilanları otomatik birleştiren bir mekanizma yok; bu tür eşleşmeler olasılıklıdır ve kararı insanın vermesi gerekir.

Fiyat sütunu metin olarak geliyor, neden?

Sayfada yazan değer binlik ayracı ve para birimi eki taşıyan bir metindir. Toplama katmanı ham değeri bilinçli olarak korur, çünkü dönüşüm kuralı hatalı olursa ham veriye dönebilmek gerekir. Analiz öncesinde ayraç ve ekleri ayıklayıp sayıya çevirin, para birimini ayrı sütunda tutun.

İki farklı taramayı nasıl birleştiririm?

Önce her iki dosyada da her satırın hangi taramaya ait olduğunun belli olduğundan emin olun; bu bilgi yoksa birleştirmede zaman kaybolur. Sonra ilan numarası üzerinden eşleştirin: iki tarafta da olanlar karşılaştırma, yalnızca yeni dosyada olanlar yeni ilan, yalnızca eskide olanlar ise listeden çıkmış ilan anlamına gelir.

Toplanan veride kişisel veri var mı, sorumluluk kimde?

İlanda gerçek kişiye ait iletişim bilgisi yayınlanmışsa bu alan KVKK kapsamına girer. Veri sizin cihazınızda oluştuğu ve orada kaldığı için saklama süresi, kullanım amacı, güvenlik tedbiri ve silme yükümlülüğü veriyi elinde tutan taraftadır. Dosyayı paylaşmadan önce bu sütunları ayıklamak iyi bir alışkanlıktır.

Veriyi kendi veritabanıma aktarabilir miyim?

Aktarabilirsiniz, ancak doğrudan bir veritabanı bağlantısı ya da programlama arayüzü sunulmuyor. Entegrasyon dosya üzerinden kurulur: Excel veya CSV çıktısını alıp kendi yükleme adımınızla besleyebilirsiniz. Tip dönüşümlerini bu adımda bir kez tanımlamak, her seferinde elle düzeltmekten daha güvenlidir.

Türkçe karakterler bozuk görünüyorsa veri mi bozuk?

Genellikle hayır. Bu neredeyse her zaman bir okuma sorunudur: dosya farklı bir karakter kodlamasıyla açılmıştır. Dosyayı doğru kodlamayla içe aktardığınızda alanlar düzelir. Aynı dosyayı bir metin düzenleyicide açıp kontrol etmek, sorunun kaynağını hızlıca ayırt etmenizi sağlar.