15 Ocak 2010 Cuma

Web Crawler

Robot,spider(örümcek),worm,walker,wanderer olarakta bilinir .Hemen hemen Web tarihi kadar eski bir yazılım türüdür .Web crawlerlar webi tarayarak sitelerin içeriğini indirip depolamakla görevlidirler . Web artık ele avuca sığmayan milyarlarca siteden oluşmakta .Bu büyüklükteki veriyi indirip işlemek çok zahmetli bir iş .Bunun için ileri teknikler kullanılan bu yazılımlara ihtiyaç vardır . Agent tabanlı olan bu yazılımlar web içeriğini belirlenen sitelerden besleme yapılarak indirmeye başlar ve indirilen html içeriği içinde bulunan yeni url leri depolar .
Bulunan yeni url ler bir kuyruk yapısına konur ve aynı işlemler devam eder .Tabi bu indirilen html içerikleri de ayrı depolanır .Bu html içerikleri arama motorları için kendi algoritmaları için kullanılabilir .

Web crawları beş ana fonksiyon altında inceleyebiliriz .

  • URLl frontier(indirilecek URLlerin listesi)
  • Domainlerin ip çözümlemesi
  • HTTP protokolü kullanılarak içeriğin indirilmesi
  • HTML içeriğinden yeni linklerin bulunması
  • Yeni URLlerden önceden indirilenlerin belirlenmesi












URL Frontier

URL Frontier indirilecek olan URLleri tutan bir veri yapısı .Bir çok crawler Breath first algoritmasını kullanarak webi dolaşmaya çalışır .Bu dolaşım biçimi FIFO kuyruk yapısında kolayca tanımlanabilir .Gerçekte kullanılan bir crawler milyonlarca URL yi tutacağı için büyük bir bölümü hard diskte tutulması gerekir .Kuyruk yapısınıda bu şekilde dizayn etmemiz gerekecektir .

Crawler URL frontierından aldığı urlyi HTTP protokolünü kullanarak siteyi indirecektir ancak ilk önce bu url nin ip çözümlemesi yapılması gerekir .Bunun için DNS ye bağlanarak domaine karşılık gelen IP adresini alır .Bu IP ile Web servera bağlanarak gerekli HTML içeriğini indirir .
Crawlerlar için her defasında DNSe bağlanıp domainin IP sini öğrenmesi uzun zaman alabilir .Bunu önlemek için ziyaret edilen sitelerin IP adresleri kaydedilebilir .


İÇERİK TESTİ

Bir çok döküman internette farklı URLler altında yayılanabilir veya miror edilmiş olabilir .İki faktörde Crawlerın bu aynı dökümaları birden fazla indirmesine sebep olabilir .Bunu engellemek için içerik testi uygulanması gerekir.Bu testi uygulamak hem yer hemde zaman açısından çok probleme yol açabilir . Testi bütün dokümanların belli bir bölümüne uygulayarak yer ve zamandan tasarruf sağlayabiliriz. Testi gerçekleştirebilmek için checksum algoritmaları olan MD5 ve SHA algoritmaları kullanılabilir.

URL TESTİ

İndirdiğimiz sitelerin içinde bulduğumuz URLler bizim için yeni indirilecek olan sitelerin adresini bulmamıza yarıyordu fakat bir URL bir sitede birden fazla veya başka sitelerde de bulunabilir .Bulunan her URLnin önceden bulunup bulunmadığını yine kontrol etmemiz gerekecektir .Elimizde milyonlarca URL olduğunu düşünürsek bu işlem de zaman alan bir işlem olarak görülebilir .

HTTP protokolü


Siteleri indirirken HTTP protokolü kullanılıyor demiştik. HTTP protokolü TCP/IP üzerinde çalışan bir protokol .Kullandığımız web tarayıcıları bu protokolü kullanarak web serverlara bağlanır ve girilen URL ye karşılık gelen dökümanı tarayıcıya gönderir .Bu işlem klasik istemci sunucu paradigması kullanılarak gerçekleşir .


İstemci(client) web tarayıcımız ve sunucumuz URLde bulunan domaine karşılık gelen IP adresindeki web serverimizdir .İstemci yazılım request paketini hazırlar ve gönderir sonrasında sunucu bu paketin çözümlemesini yapar ve response mesajını ve bir sorun yoksa HTML içeriğini göndermeye başlar.

request paket örneği

GET http://en.kioskea.net/ HTTP/1.0
Accept: text/html
If-Modified-Since: Saturday, 15-January-2000 14:37:11 GMT
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

response paket örneği

HTTP/1.0 200 OK
Date: Sat, 15 Jan 2000 14:37:12 GMT
Server: Microsoft-IIS/2.0
Content-Type: text/HTML
Content-Length: 1245
Last-Modified: Fri, 14 Jan 2000 08:25:13 GMT

Socket programı yazarak request paketini 80. porttan gönderdiğiniz de kullandığınız dile göre
değişebilen (c dilinde receive())fonksiyonla sunucudan gelecek response paketini alabilirsiniz .

Son olarak bir web crawlerin yaptığı işlemlerin sonuçlarını paylaşmak istiyorum.

200 OK 65,790,953 87.03%
404 Not Found 5,617,491 7.43%
302 Moved Temporarily 2,517,705 3.33%
301 Moved Permanently 842,875 1.12%
403 Forbidden 322,042 0.43%
401 Unauthorized 223,843 0.30%
500 Internal Server Error 83,744 0.11%
406 Not Acceptable 81,091 0.11%
400 Bad Request 65,159 0.09%
Other 48,628 0.06%
Total 75,593,531 100.0%












Hiç yorum yok:

Yorum Gönder