Ana içeriğe atla

Web sayfalarındaki verileri işleme (Web Crawling)

Web crawling, internet sitelerindeki sayfalarda dolaşılıp, istenen bilgilerin derlendiği bir programlama tekniği olarak özetlenebilir. Öncelikli olarak şunu belirtmek gerekir ki, API si olan bir web sitesine web crawling yapmak iyi bir fikir değildir. API yi kullanmakta hem site sahibi için hem de bu bilgilere erişmek isteyenler için büyük fayda vardır.

Bu işin değişik aşamalarında kullanılan bir çok yazılım kütüphanesi ve çözüm bulunmakla birlikte, bu yazıdaki amacımız bu işin teknik altyapısını çok detaya girmeden verebilmektir.

Başlangıç aşamasında, veri işlemesi için uygun, internette dolaşma konusunda yetenekli komutlar sunan, değişik sistemlerle entegre çalışabilen bir programlama diline ihtiyaç vardır.

Bunun yanında bu işlem sırasında kullanılmak üzere bilgilerin kolayca saklanabildiği ve alınabildiği yüksek performanslı, mümkünse açık kaynak kodlu ücretsiz bir veritabanına da ihtiyaç duyulacaktır. Verilerin son haline getirildikten sonra saklanılacağı bir veritabanı bir önceki veritabanı ile aynı olabileceği gibi farklı  da olabilir.

Genel olarak yarı yapısal olan XML veya JSON formatında bilgilerin saklanabildiği ve sorgulanabildiği, yüksek performanslı veritabanları tercih edilmelidir.

Olası bir kombinasyon şöyle olabilir; programlama dili olarak Python, veri işleme için Redis DB, verilerin son halini saklamak için Redis Db kullanılabileceği gibi, MongoDB de iyi bir alternatif olabilir. Tabii isteyen alışık olduğu ilişkisel veritabanı sistemi (RDMS ) ne ise onu da kullanabilir ama performans olarak diğerleri kadar memnun olmayacağını söyleyebiliriz.

İşlemin detayına kısaca bakacak olursak, öncelikli olarak istenen web site veya sitelerinin sayfa sayfa taranıp okunması işleminin yapılması gerekmektedir. Bu işlem ile sayfaları daha sonra işlemek üzere diske kaydedip işlemek, yada okunurken işlemek tercih edilebilir. İkisinin de kendisine göre artı ve eksileri mevcuttur. Buna karar vermek için ele alınan problemle ilgili detaylar gerekmektedir. Biz yazıyı kısa tutmak için bu detaylara girmeyeceğiz.

Verinin web sayfalarını okuma sırasında yada lokal diske yazıldıktan sonra işlenmesi için iki temel yöntem vardır.

Birincisi, gelen sayfaların RegEx gibi string işleme komutları ile işlenmesi, sayfadaki telefon bilgilerinin çıkarılması bu kapsamda ele alınabilir. Bu yöntemin zorluğu bütün sayfa bir string olarak alındığı için veri içindeki ilişkilerin dışlanmasının sıkıntılarıdır. Telefon u bulduk ama bu telefon kimin acaba gibi ?

İkincisi, web sayfaları HTML daha da genel olarak XML formatında olduğu için, parsing denen özel bir veri işleme tekniği kullanılarak web sayfa verilerinin işlenmesidir. Bu işleme yönteminde, web sayfasını HTML tag larından tamamen sıyırıp, sadece veriyi alabilmek mümkün olmakla birlikte, sakıncalı tarafı veri içindeki hiyerarşinin ortadan kaybolmasıdır.

Diğer bir yaklaşım ele alınan web sayfasındaki gereksiz taglardan kurtulup, mümkün olduğunca hiyerarşik bilginin korunduğu bir temizlik yapılması durumudur. Bu durumda istenen bilginin doğru şekilde alınması açısından en ideal duruma yaklaşılmış olacaktır. Bu adımda elde edilen XML veya HTML yapısı parser kullanılarak bir bellekteki bir veri yapısına yerleştirildiği için, bu tür veri yapılarını sorgulamak için özel olarak geliştirilmiş olan ve XML dünyasının SQL i denebilecek XPATH ve XQUERYsorgulama dilleri kullanılarak istenen bilgilerin alınması mümkündür.

Tabii burada herhangi bir web sayfasına özel yapılan her işlem sadece o sayfa için geçerli olacağı için, iyi ve efektif bir veri işleme için mümkün olduğunca sayfaya özel işlemden kaçınmak gerekmektedir.

Burada çok genel hatları ile çizdiğimiz sürecin her bir adımı ayrı bir yazı konusu olabilecek derinliktedir.


Hakan Sarıbıyık

Yorumlar

Bu blogdaki popüler yayınlar

SAS Nedir?

Anthony Barr, James Goodnight, John Sall ve Jane Helwig isimli dört kişi tarafından 1976 yılında Statistical Analysis System i smi ile kurulan fakat yazılım alanında ürettiği ürünlerle bu sınırları aşan SAS (SAS Institute) günümüzde borsaya açık olmayan dünyanın en büyük yazılım şirketlerinin başında geliyor. Hiç kuşkusuz bu dörtlüden en önemlisi, Harvard Business School tarafından* 20 inci yüzyılın en önemli iş liderleri listesinde gösterilen ve aynı zamanda şirketin CEO su olan James "Jim" Goodnight dır. İstatistik alanında doktorası olan Goodnight ayrı bir yazı konusu olmayı hakeden renkli bir kişilik. SAS denince ilk akla gelen öncelikle istatistik ve iş zekası alanlarında marketin önemli oyuncularının başında gelen ve "Bilmenin gücü (Power to know)" nü uzun yıllardır müşterilerinin hizmetine sunan Amerika Kuzey Karolayna merkezli dev bir yazılım şirketi olduğudur. Detaylarda ise genetik, tarım, finans, telekom, uzay, ilaç, kimya, bankacılık gibi birçok farkl

Veri kalitesi işlemlerinde bulanık mantığın (Fuzzy logic) kullanılması

Bulanık mantık (Fuzzy Logic) üzerine 1995 yılında bitirdiğim yüksek lisans tezinde, bulanık mantık ile çalışan bir uzman sistem yapmıştım. O zamanlar bulanık mantık, bilişim teknolojileri alanında yeni yeni emekleme dönemindeydi. Özellikle veritabanlarında bilgi keşfi çalışmaları için kullanılması yönünde oldukça çok akademik çalışma yapılmaktaydı. Günümüzde Bilgi Teknolojileri (BT) sektöründe bulanık mantık dahil diğer bilgi belirsizliği modellerini, BT profesyonelleri "kullanıyor" dememiz zor. Fakat en zor alanlardan biri olan ve gün geçtikçe önemi artan veri kalitesinin arttırılması konusunda yapılan çalışmalarda, bulanık mantık terimi oldukça sık ismi geçen bir terim haline geldi. Bu nedenle yazımızın konusu bu terimin genel anlamından çok veri kalitesinde kullanımı konusunda olacak. Veri kalitesi çalışmalarında fuzzy logic kelimelerini ilk duyduğumda kelimelerin bulanık küme teorisinde kullanılması geldi. Örneğin; çok gürültülü kelimesinin bulanık kümesinin kurulmas

Veriden Bilgiye Dönüşüm Sürecinin Temelleri

Merhaba, Ağırlıklı olarak Telekom sektöründe uzun yıllardır çalışmakta olan birisi olarak, büyük şirketlerdeki verinin ilk çıkış noktalarından, raporlarda yer alması ve karar destek sistemlerinde görünmesine kadar giden süreçler hakkında önemli bir bilgi birikimim oldu. Bu bilgi birikimi farklı noktalardan bakışı gerektirir ve az sayıda profesyonel, bu bakışa sahip olma ayrıcalığını taşır. Sürekli değişen Bilgi Teknolojileri (BT)  araçları ve yüksek rekabet ortamı içinde bu bilgi ve tecrübeyi sürekli güncel tutmakta ayrı bir gayret gerektirir. Tabii ki bu tecrübede kullanılan araçların yeri yadsınamaz. Atalarımız alet işler el övünür derken haklı bir noktaya temas etmişler. Fakat bu bizde, aletin işin en önemli parçası olduğu şeklinde bir yanılsama yaratmasın. Peki, işin en önemli kısmı nedir öyleyse? Bu soruya yanıt vermeden önce sürece biraz yakından bakmakta fayda var. Gerçekte birbirine benzeyen büyük şirket yada kurumlarda (yazının devamında ikisi içinde büyük org