Veri Kazıma (Data Scraping) Nedir?
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)
Veriler farklı amaçlar doğrultusunda hazırlanmış olarak farklı formatlarda (metin, görsel, ses) ve farklı mecralarda insanlar ve/veya 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/veya 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-Path1 ve Jacada2 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/veya 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 (Natural Language Processing) 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/veya yasal olduğu tartışılır3 4 5. Fiyat karşılaştırma, anlamlandırma, iletişim bilgileri toplama ve benzeri bilgiler kamuya açık olsalar dahi belirli sınırlar çerçevesinde kullanılabilirler. Bu sınırlar verinin edinildiği ve kullanıldığı ülkeler tarafından belirlenir. Örneğin, EU sınırları ve vatandaşları bağlamında ilgili çerçeve Genel Veri Koruma Tüzüğü (General Data Protection Regulation - GDPR) ile belirlenmiştir.
Büyük veya 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 İşlemi
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 Scrapper6 ve/veya Firefox eklentisi olan Outwit Hub7 ile tarayıcı üzerinden işlemler gerçekleştirilebilir.
- ScraperWiki8 ev Selenium9 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
- Web/Veri Kazıma Etik Bir Uygulama Mı? (Kasım 7, 2019), Veri Gazeteciliği
- Python ile Veri Kazıma(Web Scraping) Çalışması: Dünya Halleri Verisinin Kazınıp, Analiz Edilmesi ve Modellenmesi
- Scrapy ile Web Scraping(Web kazıma) Nasıl Yapılır?
- Tabula ile Veri Kazıma Pratiği (Youtube)
- Import io ile veri kazıma pratiği (Youtube)
- R ile İnternet Sitesinden Veri Kazıma | Web Scraping (Youtube)
- How to: Scrape the Whole Text, Including Hidden Elements from a Terminal Window. Ui Path ↩
- Jacada. Customer Service Automation - Call Center Software ↩
- "Verileri Kazıma", 13 EKİM 2023, Yavuz Akbulak ↩
- "Bir Web Sayfasını İçerik İçin 'Kazımak' Yasal mı?", Bilgi Güvende ↩
- "Web Kazıma (Web Scraping) ve İnternet Sitelerine Yönelik Koruma", Güleryüz Partners ↩
- Web Scraper ↩
- OutWit Hub ↩
- Scraper Wiki ↩
- Selenium automates browsers ↩