Data

Veri Kazıma (Data Scraping) Nedir?

Güncelleme:
Bir kitabı okurken veya webde gezinirken kaynakları amacımız doğrultusunda tararız. Daha önce bahsi geçen Search Intent bu sürecin arama motoru algoritmaları tarafından nasıl ele alındığını ...
GÖRSEL

Bir kitabı okurken veya webde gezinirken kaynakları amacımız doğrultusunda tararız. Daha önce bahsi geçen Search Intent bu sürecin arama motoru algoritmaları tarafından nasıl ele alındığını göstermekteydi. Bu yazıda ise tıpkı bir kitaptaki başlıkları, vurguları, ilgimizi çeken kelimeleri veya bir internet sitesinde başlıkları, görselleri, vurguları, farklı renkteki cümleleri aradığımız gibi bunun yazılımlar vasıtasıyla bir amaç doğrultusunda verilere ulaşmak için nasıl yapıldığına değineceğim. Evet, konumuz veri kazıma.

Veri Kazıma (Data Scraping) Nedir?

Veriler farklı amaçlar doğrultusunda hazırlanmış olarak farklı formatlarda (metin, görsel, ses) ve farklı mecralarda insanlar ve/ya diğer sistemler tarafından erişilebilir olarak sunulmaktadır. Bu erişim açık ya da sınırlı olabilir. Verinin kayıt altına alınması ve sunulması aşamasında insan tarafından okunabilir olması bir şart değildir. Ancak bir blog içeriği, sosyal medya akışı ya da pdf formatındaki bir makale için elbette okunabilirlik önemli bir kriter olacaktır. Arama motortları da kullanılan algoritmalar bağlamında içerikleri bu şekilde tarar, anlamlandırır ve sınıflandırırlar. Tüm bu süreç genel bir terim ile ifade edilir; veri kazıma.

Veri kazıma, genel anlamı ile, bir bilgisayar programının bir veri kaynağından anmalı veri çıkarma işlemini ifade eder. Elbette bir web sayfasından ve/ya bir Excel tablosundan kopyala-yapıştır ile verinin taşınması da veri kazıma olarak nitelendirilebilir. Ancak, basit işlemleri gözardı edecek olursak, bir veri yığını içerisinden kopyala-yapıştır ile verinin taşınmasının bir hayli uğraştırıcı olduğunu da kabul etmemiz gerekir. Diğer yandan, görsellerden ve ses dosyalarından verinin kazınması işlemi çoğu zaman hala bir insan müdahalesine ihtiyaç duymaktadır. Günümüzde çeşitli algoritmalar aracılığıyla bu işlemler gerçekleştirilebiliyor olsa da hala istenen düzeyde başarı gösterdiği söylenemez. Veri taramanın genel bir ifade olduğundan bahsetmiştik. O halde, konuyu biraz daha detaylandıralım.

Ekran Kazıma (Screen Scraping)

Ekran kazıma, web kazıma işleminde olduğu gibi verileri ayrıştırmak yerine (bu konuya ilgili başlık altında detaylıca değineceğim) bir bilgisayar terminal ekranından metin verilerinin programlı bir şekilde toplanmasıyla ilişkilidir. İhtiyaç duyulan veri başka bir programın ekran çıktısından elde edilir. Bu işlemler bir kullanıcı arayüzü vasıtasıyla verinin işleme alındığı daha karmaşık senaryoları da kapsayabilir. Özetle, ekran kazıma eski uygulama programları ve modern kullanıcı arayüzleri arasında aracılık eden bir programlama parçasıdır diyebiliriz. Veritabanı veya dosyaların taranması yerine tarama işlemi verilerin görüntülendiği yerde gerçekleşir. Dolayısıyla kullanıcıya iletilen veriler üzerinden işlem yürütülür.

Bir RPA aracı olan Ui-Path ve Jacada bu amaçla değerlendirilebilir.

Rapor Madenciliği (Report Mining)

Rapor madenciliği, bir rapor içerisinden veri çıkarılmasıdır. Örnek olarak, sayfa görüntülemeler, oturum süreleri gibi bilgileri görüntülediğinzi bir arayüz, dinamik olarak görüntülenen veya sıklıkla güncellenen (günlük, haftalık vb.) organik trafik verilerini, reklam tıklamalarını, satışları veya kredi kartı harcamaları içeren raporlar ele alınabilir. Rapor madenciliği ile raporlardaki belirli alanlar bir dosyada biriktirilerek ayrıca bir analiz sürecinde değerlendirilebilir ve statik rapor olarak tutulabilirler. Rapor madenciliği ile kaynakların (CPU kullanımı, lisans ve çıktı maliyetleri vb.) daha efektif kullanımının yanı sıra raporlar içerisinden hızlı bir şekilde ilgili verilerin edinimi sayesinde hata ve bildirim yönetimi de kolaylaşmaktadır.

Rapor madenciliği ekran ve web kazıma gibi dinamik çıktı ile etkileşime girmeyi gerektirmez. Daha çok HTML, PDF veya CSV, Excel gibi metin dosyalarından veri çıkarmayı içerir. Bu yaklaşım, kaynak sisteme erişim gereksinimini ortadan kaldırır (veya minimum erişim gerektirir), basit ve hızlıdır.

Web Kazıma (Web Scraping)

Örnekler temelinde sıklıkla üzerinde duracağımız konumuz web kazıma. Web kazıma, metin tabanlı biçimlendirme dillerinin (XHTML, HTML, Markdown gibi) taranması, web sunucuları ve/ya uygulamalar arasındaki veri akışının (JSON, XML, YAML vb.) dinlenmesi ve verilerin bu dosyalardan kazınması işlemlerini ifade eder. Bu amaçla pek çok araç ve programlama dili geliştirmeleri mevcuttur.

Fiyat, haber ve gündem takibi, rekabet incelemeleri, iletişim bilgileri gibi pek çok bağlam çerçevesinde ele alınabilir. Bir web sitesinin içerikleri taranarak kelime yoğunluğu çıkarılabilir ya da kişi bilgileri taranarak profilleme yapılabilir.

Günümüzde DOM ayrıştırma, bilgisayar görüşü ve NLP gibi insan davranışlarını taklit eden teknikler de otomatik bir şekilde içeriklerin kazınması amacıyla kullanılabilmektedir. Elbette bu işlemlerin ne kadar etik ve/ya yasal olduğu tartışılır. Büyük ve/ya sınırlı erişime sahip web siteleri verilerin kazınmasını önlemek amacıyla çeşitli güvenlik önlemleri almaktalar. Belirli bir IP ya da IP bloğunun engellenmesi, robot kontrolleri gibi durumlarla sıklıkla karşılaşılmaktadır. Diğer yandan, izinsiz bir tarama ve bu taramada özel bilgilerin yer bulması çeşitli yasal sorunlarla da karşılaşılmasına neden olabilir.

Web Kazıma Nasıl İşler?

Web kazıma işlemi için bir URL‘e ihtiyaç vardır. URL’e istekte bulunulur ve gelen yanıt taranarak içeriğinden istenen veri çıkarılır. İstekte bulunma ve görüntüleme temel olarak bir internet taraycısı davranışıdır. Dolayısıyla, web taraması web kazıma işleminin ana bileşeni olarak nitelendirilebilir. Sunucundan gelen yanıt içerisinde arama, filtreleme, ayrıştırma, yeniden biçimlendirme, kopyalama gibi pek çok işlem gerçekleştirilebilir.

Web kazıma kişi tarama, gazetecilik, web indeksleme, veri madenciliği, fiyat ve ürün takibi / karşılaştırması ve daha pek çok amaç için kullanılabilmektedir.

Programlama dili ve uygulamalar temelinde pek çok farklı teknikle web kazıma işlemi gerçekleştirilebilmektedir.

  • Modern web tarayıcıların sahip olduğu geliştirici araçları ve konsol vasıtasıyla işleme alınabilecek JavaScript kodları yöntemlerden biri olarak değerlendirilebilir.
  • Bir Chrome eklentisi olan Web Scrapper ve/ya Firefox eklentisi olan Outwit Hub ile tarayıcı üzerinden işlemler gerçekleştirilebilir.
  • ScraperWiki ev Selenium gibi farklı çözümler değerlendirilebilir.
  • Python ve R gibi programlama dillerinin sahip oldukları kütüphaneler kullanılabilir.

Web Tarama İle Web Kazıma Arasındaki Farklılıklar

Web kazıma ile web tarama birbirinden farklı süreçleri ifade ederler. Temel bir şekilde ifade etmek gerekirse web taraması Google, Yandex, Bing ve Yahoo gibi arama motorları ya da bu arama motorları davranışlarını taklit eden araçlar (Ahrefs, Screaming frog, DeepCrawl gibi SEO araçları vb.) tarafından gerçekleştirilen bir işlemdir. Örümcek adı verilen bir tarayıcı üzerinden işlemler gerçekleştirilir. Bu örümcekler belirli bir davranış (sadece görseller, sadece ses dosyaları vb.) özelinde hareket edebilirler. Bir kaynak URL üzerinden tarama yapılarak tüm bağlantılar bulunur ve getirilir. Başlangıç URL’den itibaren tarama işlemi alan adı çerçevesinde gezinir, bağlantıların durumunu izler. Özetle, web sitesine ait bir indeks oluşturur. Sayfalarla ilgili getirilen bilgiler gelişigüzel ya da genel bir bağlamdadır. Diğer yandan, kimi araçlar bu tarama işleminde URL’in tamamen yüklenmesi ve nasıl görüntülendiğine de dikkat ederler.

Web kazıma ise tarama işlemini de barındırabilir. Hedef URL belirli bir amaç doğrultusunda taranır ve taranan sayfadan belirtilen bilgi(ler) bulunup çıkarılır. Örneğin, fiyat bilgisi, e-posta, telefon numarası, adres, başlık, içerik veya içeriğin bir bölümü gibi. Bu belirtme işlemi konum, tag, class, id gibi bir işaretleme üzerinden yapılabilir. Diğer yandan, tarama işlemi olmadan da sadece belirtilen URL’ler temelinde kazıma işlemi gerçekleştirilebilir. Bu amaçla sitemap dosyaları, ürün xml ve RSS yayınları vb. kaynaklar kullanılabilir.

İleri Okumalar
Kaynakça
  1. Data Scraping, Wikipedia
  2. Web Scraping, Wikipedia
  3. What’s the difference between web scraping and screen scraping?
  4. What is Screen Scraping?
Ceyhun Enki Aksan

Kullanıcı Davranışları Analizi (User Behavior Analysis) ve Kullanıcı Deneyim Tasarımı (UX Design) üzerine çalışmalar yürütmekte, bu süreçte edindiğim teknik ve pratik bilgileri fayda sağlamak motivasyonuyla (afaik / as far as i know) paylaşmaktayım.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.