SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
WEB CRAWLING
115112004 Enes ÇAĞLAR
• Web crawler web’de bağlantı yapısını otomatik olarak inceleyip bu bağlantılardaki
herbir sayfayı otomatik olarak bir depolama alanına indiren programdır.
• Web crawling genelde bir arama motorunun veya web madenciliğinin ilk adımıdır.
Web Crawler
• Universal Crawler
Universal crawler içeriğe bakmaksızın tüm sayfaları indirir.
• Topic Crawler
Sadece belirli başlıklardaki içerikleri indirir. Topic crawling de en önemli
zorluklardan bir tanesi o konuya ait sayfaların nasıl tanınacağıdır.
Web Crawler
Universal
Crawler
Topic
Crawler
Crawler
• Online mod :
Online modda sayfalar indirilir indirilmez analiz edilir.
• Offline mod :
Offline modda ise sayfalar indirilip depolandıktan sonra analiz edilir.
Web Crawler
Online Mode Offline Mode
Crawler
• İş zekası uygulamaları , şirketler kendi rakipleri hakkında bilgi toplamak için kullanırlar.
• Web sitelerini ve ilgili oldukları sayfaları gözlemleyerek yeni ilgili oldukları konularda
yeni bir bilgi geldiğinde bundan haberdar olurlar.
• Ayrıca kötü niyetli kullanımlar da vardır , özellikle mail adresi ve kişisel bilgilerin
toplanması gibi.
• En yaygın uygulaması ise arama motorlarıdır.
Web Crawler Uygulamaları
Fig. 1.1 Basit bir web crawler
algoritmasının akış diagramı. Veri
operasyonları sol tarafta kesikli çizgi ile
gösterilmiştir.
Seed URLs
Start
Initialize Frontier
Dequeue URL from
frontier
Fetch Page
Extract URLs and
add to frontier
Store Page
Done?
Stop
Repository
Frontier
Yes
No
Web
Web CrawlerAlgorithm
Frontier : Ziyaret edilmemiş URL listesi.
• Frontier first-in-first-out (FIFO) olarak implemente edilebilir. Bu durumda web crawler
Breadth-First crawler olarak adlandırılır.
• Yeni bulunan adresler listenin sonuna eklenir. Daha önce belirtildiği gibi frontier da
sadece ziyaret edilmemiş bağlantılar tutulur.
• Ziyaret edilmiş bağlantılar için crawl history dediğimiz bir yapı tutulur. Burada herbir link
için son erişilen zaman tutulur. Bir bağlantının crawl history e girebilmesi için daha
önceden ziyaret edilmiş olması gerekir.
• Bu liste ile ziyaret edilen bağlantıların tekrardan ziyaret edilmesi önlenmiş olur ayrıca
limitli bir boyutu olan frontier listesi de boş yere kullanılmamış olur.
• Crawl history genellikle bir hash table da tutulur. Bu da bir bağlantıyı aramada bize O(1)
işlem zamanı verir.
Breadth-First Crawlers
• Eğer frontier listesi FIFO yerine öncelikli kuyruk yapısı şeklinde uygulandıysa bu
preferential crawler olarak adlandırılır.
• Burdaki amaç belirli başlıktaki konuların analiz edilmesidir.
• Preferential crawler da FIFO crawler a göre seed listesi seçimi çok daha önemlidir.
• Frontier listesine yeni bir bağlantı eklenirken belirli bir puan verilerek eklenir ve liste her
zaman sıralı şekilde tutulur.
• Bu durumda frontier listesine yeni bir bağlantı eklemenin asimptotik analizine
baktığımızda O(logF) olur , F burada frontier listesinin büyüklüğüdür.
Preferential Crawler
• Web crawler sayfaları getirirken bir web istemci gibi davranır , sayfayı barındıran web
sunucuya bir HTTP request i gönderir ve dönen cevabı okur.
• İstemci büyük sayfaların okunurken veya yavaş cevap veren sunuculardan istekte
bulunurken zaman kaybetmemek için belli bir süre sonra bağlantı zaman aşımına
uğramalıdır.
• Genelde sayfa başına 10-100 KB den daha fazla indirilme olması engellenir.
• İstemci durum kodlarını ve yönlendirmeleri alabilmek için sunucudan dönen cevabın
başlık kısmını parse eder.
• Ayrıca burada bir bağlantı döngüsünü engellemek için de kontroller vardır , eğer bir
bağlantı birden fazla sayıda gelirse işlem durdurulur.
Implementation Issues
Fetching
• Sayfalar indirildiğinde veya indirildikten sonra sayfadan belirli bilgilerin çıkarılması
işlemi başlar.
• Parsing işlemi basit örneğin sadece sayfadaki linkleri çıkarmak da olabilir daha
karmaşık işlemler de olabilir.
• Bu işlem, crawler örneğin bir arama motoruna destek veriyorsa indexleme
işlemidir.
• DOM (Document Object Model) HTML sayfasının etiket ağacı şeklinde gösterir.
• Fakat standart formatta olmayan bazı formatlar crawler lar parse işlemi için başka
bir sorundur , flash içerikli siteler , çok fazla javascript kullanan siteler buna
örnektir.
Implementation Issues
Parsing
<html>
<head>
<title>Here comes the DOM</title>
</head>
<body>
<h2>Document Object Model</h2>
<img align="right" alt="dom pict" src="dom.png">
<p>
This is a simple
<code>HTML</code>
page to illustrate the
<a href="http://www.w3.org/DOM/">DOM</a>
</p>
</body>
</html>
Implementation Issues
Parsing
Implementation Issues
Parsing
html
head
body
Title
Herecomes the
DOM
h2
img
p
Document Object
Model
This is a simple
HTML
Pageto illustrate
the
DOM
code
a
<!DOCTYPE html>
<html>
<body>
<p>An absolute URL: <a href="http://www.somehost.com">Some link</a></p>
<p>A relative URL: <a href="tag_a.asp">The a tag</a></p>
</body>
</html>
 <a> etiketlerini bul
 <href> özniteliklerindeki değerleri al
 Whitelist blacklist kontrolünü yap
 Relative URL leri Absoulte URL lere çevir
Implementation Issues
Link Extraction and Canonicalization
Implementation Issues
Link Extraction and Canonicalization
Description and transformation Example and canonical form
Default port number
Remove
http://cs.indiana.edu:80/
http://cs.indiana.edu/
Root directory
Add trailing slash
http://cs.indiana.edu
http://cs.indiana.edu/
Guessed directory*
Add trailing slash
http://cs.indiana.edu/People
http://cs.indiana.edu/People/
Fragment
Remove
http://cs.indiana.edu/faq.html#3
http://cs.indiana.edu/faq.html
Current or parent directory
Resolve path
http://cs.indiana.edu/a/./../b/
http://cs.indiana.edu/b/
Default filename*
Remove
http://cs.indiana.edu/index.html
http://cs.indiana.edu/
Needlessly encoded characters
Decode
http://cs.indiana.edu/%7Efil/
http://cs.indiana.edu/~fil/
Disallowed characters
Encode
http://cs.indiana.edu/My File.htm
http://cs.indiana.edu/My%20File.htm
Mixed/upper-case host names
Lower-case
http://CS.INDIANA.EDU/People/
http://cs.indiana.edu/People/
Implementation Issues
SpiderTraps
www.somehost.com
Product X
Product Y
www.somehost.com www.somehost.com/x
Product Y
Product X
www.somehost.com/x/y
Product X
Product Y
www.somehost.com/x/y/x
Bazı web sitelerinde dinamik linkler kullanılmaktadır örneğin bir e-ticaret sitesinde
X ürününün olduğu sayfada Y ürününe ait bir bağlantı olabilir , aynı şekilde Y ürününün
sayfasında da X ürününe başka bir bağlantı olabilir. Bu durumda yukarıda gösterildiği gibi
elimizde aynı sayfaya karşılık gelen farklı bağlantılar olabilir.
Implementation Issues
Page Repository
• Sayfalar indirildikten sonra
depolama biriminde saklama
yöntemlerinden birtanesi herbir
sayfa için depolama biriminde bir
dosya tutulmasıdır.
• Dosya ismi olarak ise bağlantının
özeti (hash) alınarak çıkan sonuç
dosya ismi olarak kullanılabilir.
www.somehost.com/x
www.somehost.com/y
www.somehost.com/z
Hash Link Name
97da5d52d02cffcdaa30eba1efbe969b
b3df6f576a7ce36687c84a492f9bd8ca
d4e74562a8f166eefedd08a6e34b5b7a
Implementation Issues
Concurrency
• Crawler network, CPU ve disk olmak üzere üç kaynağı da kullanır.
• Sequential crawler bu durumda çok da verimli değildir çünkü her durumda üç kaynaktan
ikisi boştadır.
• Crawler ı hızlandırmak için en önemli geliştirmelerden birtanesi eşzamanlılıktır.
• Eş zamanlılık multi process (çoklu işlem) veya multi thread kullanılarak sağlanabilir.
• Herbir thread veya process bağımsız bir crawler gibi çalışır ve ortak erişim alanları
vardır , örneğin frontier listesi tüm process veya thread ler tarafından ortak olarak
kullanılmalıdır.
• Concurrent crawler da dikkat edilmesi gereken frontier listesine birden fazla thread
erişeceği için boş olup olmadığının kontrolü dikkatli yapılmalıdır.
Implementation Issues
Concurrency
Seed URLs
Frontier
Frontier Manager
Dequeue URL
from Frontier
Fetch Page
Extract URLs
and Add To
Frontier
Store Page
Done?
Repository
Web
Thread Manager
.......
Thread/Process 1
Thread/Process N
Universal Crawlers
• Universal crawler lar yapısal olarak concurrent crawler dan farklıdır.
• Universal crawlerlar iki önemli faktörü karşılamalıdır;
 Performans : Universal crawler lar saniyede binlerce sayfayı işleyebilme özelliğine
sahip olmalıdır.
 Policy : Erişebildikleri kadar geniş web deki önemli sayfalara erişebilmelidirler.
• Universal crawler ların concurrent crawler dan en önemli farkı thread/process yerine
asynch soketler kullanılmasıdır.
• Bu soketler bağlantıyı bloklamazlar böylece prosesler yüzlerce bağlantıyı aynı anda açık
tutabilirler.
• Bu da etkin bant genişliği kullanımı sağlar.
Universal Crawlers
Fetch Page
Frontier
Frontier Manager
Dequeue URL
from Frontier
Extract URLs
and Add To
Frontier
Store Page
Done?
Disk
Web
Thread Manager
Thread
Resolve DNS
Asynch Sockets
HTTP Get
Storage
Switch
Disk
Network
Switch
DNS
Cache
Universal Crawlers
• Universal crawler frontier listesini paralel olarak tutabilir , herbir kuyruktaki bağlantılar bir
sunucuya denk gelir.
• Yükü birçok sunucuya dağıtarak birçok bağlantı aynı anda açık kalabilir ve böylece de
TCP/IP bağlantısını açıp kapatmaktan da kurtulunur. (TCP handshake)
• DNS bağlantılarında sıradan crawler lar herbir URL için farklı bir TCP bağlantısı açar,
universal crawler TCP yerine UDP protokolünü kullanır.
• Ayrıca DNS hafızada cache tutarak sorgulamalara hızlı bir şekilde cevap vermesi
sağlanır.
Universal Crawlers
Coverage vs. Freshness vs. Importance
• Universal crawler lar bile web deki tüm sayfaları erişemez.
• Bu sebeple universal crawler lar daha önemli sayfalara odaklanırlar.
• Önemli sayfalar bağlantı popülerliği ölçülerek (PageRank) değerlendirilirler.
• Fakat web çok dinamik olduğundan dolayı indekslerin güncel olarak tutulabilmesi için
ziyaret edilen sayfalar yeniden ziyaret edilmelidir.
• Bu güncellik sağlanırken coverage ve freshness arasındaki bağlantı dikkate alınmalıdır.
Focused Crawlers
Coverage vs. Freshness vs. Importance
• Tüm web içeriğini crawl etmek yerine sadece belirli kategorilerdeki sayfaları crawl etmek
isteyebilliriz.
• Focused crawler ların bir uygulaması Yahoo! Directory (dir.yahoo.com) veya Open
Directory Project (ODP, dmoz.org) gibi web taksonomilerini (sınıflandırma bilimi)
geliştirmektir.
• Bu uygulamalarda amaç etiketlenmiş örrnek sayfalardan bir metin sınıflandırıcı
oluşturmaktır.
• Daha sonra sınıflandırıcı bu kategorideki sayfaları crawler a crawl etmesi için rehberlik
eder.
• Sınıflandırıcıyı eğitmek için çeşitli kategorilerden örnek sayfalar çekilir.
• Sınıflandırma algoritması olarak Bayes sınıflandırıcısı kullanılabilir.
• Taksonomideki herbir kategori için P(c|p) olasılığını hesaplamak için bir Bayes
sınıflandırıcısı yapılandırılabilir. c -> Category p-> Crawled Page
• Bu durumda P(top|p) = 1 olur. top-> root page
Focused Crawlers
Coverage vs. Freshness vs. Importance
• c* ile gösterilen alanlar focused crawler
ın ilgili oldukları kategorileri
göstermektedir.
• c1 sayfasından çıkarılan bağlantılar
frontier listesine eklenecektir.
• C1 sayfasının bağlı olduğu sayfalar
crawler ın ilgi alanındaki kategoriden
gelmektedir
• C2 sayfası ise frontier listesine
eklenmeyecektir.
• C2 sayfası ilgilenilen kategoride değildir.
C*
C2
C*
C’
top
C1
Focused Crawlers
Coverage vs. Freshness vs. Importance
• c* ile gösterilen alanlar focused crawler
ın ilgili oldukları kategorileri
göstermektedir.
• c1 sayfasından çıkarılan bağlantılar
frontier listesine eklenecektir.
• C1 sayfasının bağlı olduğu sayfalar
crawler ın ilgi alanındaki kategoriden
gelmektedir
• C2 sayfası ise frontier listesine
eklenmeyecektir.
• C2 sayfası ilgilenilen kategoride değildir.
C*
C2
C*
C’
top
C1
Crawler Design
Input
PageDownloading
Content Processing
Priority Assignment
Expansion
• Input : Başlangıç adresleri.
• Page Downloading : Bağlantılar indirilir ve bir kuyrukta
saklanır.
• Sequential (non-focused) crawler lar bu bağlantıları
FIFO mantığıyla indirir.
• Focused crawler lar ise bu bağlantıları belirli kriterlere
sırasına göre yeniden sıralayabilir veya linkleri
kuyruktan çıkarabilir.
• Content Processing : İndirilien sayfalar analiz edilir
ifade vektörlerine çevirilir
• Priority Assignment : İndirilen sayfalardan çıkarılan
bağlantılara öncelikleri belirlenerek kuyruğa aktarılır.
• Expansion : Bağlantılar genişleme için seçilir ve 2. ve
5. adımlar belirli bir kritere gelene kadar tekrar edilir.
BEST FIRST CRAWLERS
Best First Crawler
• Sayfalara indirme önceliklerini dokuman(d) ile konu (q) arasındaki benzerliği
hesaplayarak atar.
• Sayfa ve konu ifade vektörü şeklinde yazılır ve benzerlik VSM’ye (Vector Space Model)
göre hesaplanır.
qi : Konu (topic) vektöründeki ifadelerin «tf -idf»
ağırlıkları
di : Sayfa vektöründeki ifadelerin «tf -idf»
ağırlıkları
• Bir döküman için ifade ağırlıkları aşağıdaki gibi hesaplanır:
Semantic Crawler
• Semantik crawler da konuda geçen ifadelerle anlamsal olarak benzer ifadeler de
alınarak konu genişletilir.
• Birbirine benzer ifadeleri almak için «Wordnet» kullanılır.
• Konu ve aday sayfalar arasındaki benzerlik içerdikleri ifadelerin anlamsal benzerliği ile
hesaplanır.
• Bir p sayfasının önceliği aşağıdaki şekilde hesaplanır.
• K : Başlıktaki (konudaki) ifadeler
• L : Sayfa veya bağlantı metnindeki ifadeler
• Wk,Wl : İfade ağırlığı
• Sim(k,l) : k ve l nin anlamsal benzerliği
1 Eğer l k ifadesinin eşdeğer setinde varsa
Sim(k,l)
0 Diğer durumlarda
VECTOR SPACE MODEL (VSM)
• VSM ya da TVM (Term Vector Model) metin dökümanlarını vektör olarak ifade etmede
kullanılır.
• Döküman ve sorgular vektör olarak ifade edilir ;
• dj = (w1,j,w2,j,....,wt,j)
• q = (w1,q,w2,q,....,wt,q)
• Herbir boyut farklı bir ifadeye (metinlerde ifade genellikle anahtar kelime) denk gelir.
• Eğer sorgu ifadesi dökümanda varsa vektördeki değeri 0’dan farklı bir değer alır.
• Bu değer birçok yöntemle hesaplanabilir.
• En çok kullanılan yöntem «tf-idf» tir.
• tf : term frequency
• İdf : inverse document frequency
Vector Space Model
• td-idf kullanılarak d dökümanı için ağırlık vektörü hesaplanabilir.
wt,d = tf.idf wt,d = tft,d.
• tft,d : d dökümanında t ifadesinin frekansı
• |D| : Döküman setindeki toplam döküman sayısı
• |{d’ ∈ D | t ∈ d’}| : t ifadesini içeren toplam döküman sayısı
• : idf (inverse document frequency)
Vector Space Model
log
|D|
|{d’ ∈ D | t ∈ d’}|
log
|D|
|{d’ ∈ D | t ∈ d’}|
• Örneğin d1 dökümanı ile q query si
arasındaki benzerlik cosine similarity
kullanılarak aşağıdaki gibi hesaplanır.
Vector Space Model
• Cosine Similarity:
• A.B = ||A||.||B||. cosα
LEARNING CRAWLERS
• HMM crawler sayfa içeriği ve ilgili sayfalar giden yol arasında bir ilişki kurarak çalışır.
• Eğitim seti oluşturmak için kullanıcı belli bir konudaki sayfaları bulur ve bu sayfaların
konu ile ilgili olup olmadığını etiketler.
• Daha sonra bu sayfalar k-means methodu kullanarak kümelenir.
• Konu ile ilgilli sayfalar C0 kümesini oluştururken , ilgili olmayan sayfalar C1 den Ck ya
kadar olan kümeleri oluşturur. HMM mo0deli de bu kümlerin üzerine kurulur.
• Herbir sayfa iki durum ile karaketerize edilir ;
• Visible State : Sayfanın içeriğine göre ait olduğu kümeye denk gelen durum
• Hidden State : Sayfanın hedef sayfadan uzaklığı.
Learning Crawlers
• Sayfanın ait olduğu kümenin önceliği sayfa crawl edildiğinde hedef sayfaya götürme
olasaılığı ile hesaplanır.
Learning Crawlers
• L0 : Hedef veya seviye 0 sayfalar
• L1: Seviye 1 sayfalar(Hedeften 1
bağlantı uzaklıkta)
• L2: Seviye 2 sayfalar (Hedeften
2 bağlantı uzaklıkta)
• L3: Hedeften 3 bağlantı veya
daha uzak sayfalar
• C0: Küme 0
• C1: Küme 1
• C2: Küme 2
• Aynı clusterdaki sayfalar farklı seviyelere
• Aynı seviyedeki sayfalar farklı clusterlara ait olabilir.
• Sayfalar seviyelerine(hidden state) Li(i->seviye) ve ait oldukları clustera (cj) göre
• karakterize edilir. Bu da HMM ile modellenir.
Şekil : HMM Eğitim Seti
• Bu modelde:
1- InitialprobabilityMatrix(Başlangıçolasılıkmatrisi)
• π= {P(L0 , . . . ,Lstates -1)} states: number of hidden states
• P(Li) -> 1 zamanında i gizlivdurumunda olma olasılığı
• Bu olasılık her bir sayfaya eğitim setinde aynı gizli durumda olan sayfaların yüzdesi
atanarak tahmin edilir.
2-TransitionProbabilitiesMatrix(GeçişOlasılık Matrisi)
A = [aij] 0 <= i <= states
Aij -> Eğer t anında Li durumunda ise, t+1 durumunda Lj de olma olasılığı
Bu olasılık eğitim setinde Li’den Lj’ye geçişler sayılarak tahmin edilir ve bu değer Liden
olan tüm geçişlere göre normalize edilir.
Learning Crawlers
Learning Crawlers
3- EmissionProbabilitiesMatrix(Durum Olasılık Matrisi)
B = [bij] 0 <= i <= states 0 <= j < clusters (Toplam cluster sayısı)
• Bu olasılıklar Li durumunda Cj clusterına ait olan sayfaların, Li durumunda olan tüm
sayfalara normalize edilmesi ile bulunur.
• Tüm bu bileşenler (π ,A ve B) crawling başlamadan önce eğitim seti üzerinden
hesaplanır.
• Crawler sayfayı indirir, sayfaların vektörlerini (VSM kullanarak) çıkarır ve herbir sayfayı
K- nearest neighbours algoritmasını kullanarak kümelere atar.
• Sayfanın hedef sayfaya götürme olasılığı HMM parametreleri kullanılarak hesaplanır.
• Bu olasılık sayfada bulunan linkin ziyaret edilme önceliğine karşılık gelir.
• HMM model parametreleri kullanılarak bir sonraki adımdaki durum tahmini olarak
hesaplanır.
• Bu tahmini değeri hesaplamak için her bir ziyaret edilen sayfa a(Lj , t) , j= 0,1,...states
ile ilişkilendirilebilir.
• a(Lj , t) -> t zamanda Lj durumundaki sayfanın indirilme olasılığı
• Bu değer aşağıdaki gibi recursive olarak hesaplanabilir.
(1)
Learning Crawlers
• Aij : A matrisindeki Li’den Lj durumuna geçiş olasılığı
• Bjct : B matrisindeki Lj durumunda n ct kümesinin çıkış olasılığı
• A(Lj , 0) : Bitiş adımı ise başlangıç olasılık matrisi π ‘den alınır.
• A(Lj , t+1) : bir sonraki adımda Lj durmunda olma olasılığı
• Bir sonraki adımda L0 (relevant page) durumunda olma olasılıgı HMM crawler
tarafından sayfalara atanan önceliktir.
• Eğer iki küme eşirt olasılık veriyor ise 1 ve 2 adımlarında daha yüksek olasılıkla
hedef sayfaları gösteren kümeye daha yüksek öncelik atanır. (HMM crawlerlarda
öncelik ataması)
• Bir başka yaklaşım olan «Proposed HMM Crawler»da ise sayfanın öncelik skoru
HMM crawler tarafından hesaplanan önceliklerin ortalaması ve centroid vektör (ilgili
sayfaların kümesini sayfanın ifade vektörü(term vektör) ) ile gösterir.
(2)
Proposed Crawler UygulamaAdımları
• Giriş : Eğitim seti ,aday sayfa (p)
• Çıkış: p sayfasına atanan öncelik değeri
1. K-Means metodu ile eğitim setini kümeler.
2. Π,A,B matrisleri Centroid (Cr) hesaplanır.
3. P sayfasının bir clustera (Ct) K-Nearest Neighbours ile sınıflandırılması
4. Geçerli bir adım için gizli durum olasılıklarının hesaplanması.
5. Bir sonraki adım için gizli durum olasılıklarının hesaplanması
6. PriorityHMM(P) = a(L0 ,t+1) önceliğinin hesaplanması
7. Similarity (p,cr)-> sayfa içeriği ve ilgili sayfaların centroidi
arasındaki benzerliğin VSM kullanılarak hesaplanması
8. Sayfa önceliğinin hesaplanması
CRAWLER ETİĞİ
Crawler Etiği
• Crawlerlar özellikle web serverlar üzerinde genel olarak band genişliğini çok fazla
kullanırlar.
• Eğer bir crawler bir web sunucusuna çok hızlı bir şekilde istek gönderiyorsa (sn de 10
veya daha fazla) crawler lar bu durumda web kaynaklarını aşırı derecede kullanıyor
demektir.
• Eğer bu istekler bir web sunucusunun kullanıcılara (end user) cevap veremeyecek kadar
fazlaysa crawler tarafından servisin kısıtlanması atağı (denial of service attack) yapmış
oluruz.
• Bu durumun önüne geçmek için örneğin concurrent crawler da frontier yöneticisi
tarafından thread lere URL ataması yapıldığı sırada yapılabilir.
Web SunucuYükü
Crawler Etiği
• Crawlerlar User-Agent http başlıklarını kullanarak crawl ettikleri web sayfalarının
yöneticilerine bilgi vermelidirler.
• Bu bilgi sadece crawler ın ismi ve versiyonu değil aynı zamanda crawler hakkında
detaylı bilgi veren bir bağlantı ve bir mail adresi de içermelidir.
• Bunun için genellikle crawler için bir web sayfası oluşturulur ve bu web sayfası http
başlığında gönderilir.
User-Agent HTTP Header
Crawler Etiği
• Bu kural crawler lar ile ilgili bir de facto(genel kabul görmüş) kuralıdır.
• Bu standart web sunucu yöneticilerinin crawler a hangi sayfalara erişemeyeceği bilgisini
verebilmesini sağlar.
• Bu işlem robots.txt adı verilen web serverın kök dizininde bulunan
(http://www.somehost.com/robots.txt) isteğe bağlı bir dosyadır.
• Bu dosya ile farklı robotlara farklı kurallar verilebilir. (Bir önceki konuda robotların nasıl
tanınabildiğini anlatmıştık)
Robot (Exclusion) Dışlama Protokolü
User-agent: *
Disallow: /
robots.txt
Crawler Etiği
• Bu kurallar web sunucuları etil olmayan
crawler lardan koruyamaz.
• Web sunucu robots.txt yi kullansa bile bu
crawler ları engelleyen birşey değildir
robots.txt nin olması isteğe bağlı olduğu
gibi bu crawler ın bu kurallara uyması da
isteğe bağlıdır.
• Fakat bu kuralları takip etmeyen crawler lar
birçok web sunucu tarafından IP bazlı
engellenmektedir.
• Fakat yine de crawler lar kendilerini bir
browser gibi tanıtarak (HTTP başlığında
user-agent alanında) işlemlerini
yapabilmektedir.
• Bu da bu tip crawler ların anlaşılabilmesini
güçleştirmektedir.
BuAdımlarYeterli Mi?
MARKOV MODELİ
• Durum uzayında bir durumdan diger bir duruma ugrayan sistem.
• Bir sonraki durum sadece o anki duruma bağlıdır, öncesinde olan olaylar bir sonraki
duruma geçişi etkilemez.
Markov Zinciri
• Markov zincirleri genelde yönlü graph kullanılarak
tanımlanır.
• Graphın kenarları bir durumdan diger duruma geçişteki
olasılığı gösterir.
Basit iki durumlu markov zinciri
1 = A, 2 = B, 3 = C
Geçiş matrisi:
0.9 0.075 0.025
P= 0.15 0.8 0.05
0.25 0.25 0.5
• Bu durumda durumlar üzerindeki dağılım stochastic(olasılık) vektörü (tüm elemanların
toplamı 1 olan ve negatif elemanı olmayan) olarak yazılabilir ve x(n+1) = x(n) p olur.
• Yani bir n zamanında durum 2(B) ise 3 zaman sonra (n+3) dağılım:
x(n+3) = x(n+2) p x(n+2) = x(n+1) p x(n+1) = x(n) p
=(x(n+1) p)p = x(n+1) p2
0.9 0.075 0.025 3
= 0 1 0 0.15 0.8 0.05
0.25 0.25 0.5
= 0.375 0.56825 0.07425
Markov Zinciri
A B
C
HIDDEN MARKOV MODELİ
• Basit bir markov modelinde (örn:Markov zinciri), durum gözlemciye (visible)
görünürdür.
• Bu durumda tek parametre durum geçiş olasılıklarıdır.
• HMM gözlemlenmeyen (Gizli-hidden) durumların da olduğu bir markov modelidir.
• HMM’de durum direkt olarak visible değildir; fakat duruma bağlı olan çıkış visible’dır.
• Her bir durum mümkün olan çıkışlar üzerinden bir olasılık dağılımına sahiptir.
• Bu sebeple HMM tarafından üretilen çıkışların sırası, bize durumların sırası hakkında
bilgi verir.
Hidden Markov Model
• X - Durumlar
• Y - Gözlemler
• a - Durum geçiş olasılıkları
• B - Çıkış olasılıkları
Hidden Markov Model
• vazo state Bir odada 3 vazo var. (x1, x2 ,x3)
• Her bir vazoda bilinen 4 adet top var. (y1 ,y2, y3)
• Odalardaki vazolardan birinden rastgele bir top alınıyor. Ve bu top taşıma bandına
koyuluyor.
• Gözlemci topların sırasını görebiliyor fakat topların alındıgı vazoların sırasını
göremiyor.
• Vazonun seçilmesi için belirli bir prosedür var:
• n. Top için seçilen vazo rastgele bir sayıya ve (n-1). Top için seçilen vazoya bağlı.
• Bu markov prosesi gözlemlenemez. Sadece topların sırası gözlemlenebilir bu nedenle
HHMM olarak adlandırılır.
• Gözlemci vazoların yapısını ve örnek gelen 3 topun sırasını gözlemlediği halde
gözlemci 3. topun hangi vazodan alındığına emin olamaz fakar herbir vazodan gelme
olasılıklarını bulabilir.
Hidden Markov Model
• Rainy,Sunny -> States
• Work,Shop,Clean -> Observations
• Output Probabilities
Rainy {walk : 0.1, shop:0.4 , clean :
0.5}
Sunny {walk : 0.6, shop:0.3 , clean :
0.1}
Hidden Markov Model

Más contenido relacionado

Destacado

Destacado (17)

Şifreleme teknikleri ve tarihçesi
Şifreleme teknikleri ve tarihçesiŞifreleme teknikleri ve tarihçesi
Şifreleme teknikleri ve tarihçesi
 
Bilgi ve bilgi varlıkları
Bilgi ve bilgi varlıklarıBilgi ve bilgi varlıkları
Bilgi ve bilgi varlıkları
 
Sensörler
Sensörler Sensörler
Sensörler
 
Ethernet arp anahtarlar yönlendiriciler ppp
Ethernet arp anahtarlar yönlendiriciler pppEthernet arp anahtarlar yönlendiriciler ppp
Ethernet arp anahtarlar yönlendiriciler ppp
 
Current challenges in web crawling
Current challenges in web crawlingCurrent challenges in web crawling
Current challenges in web crawling
 
Aynalar ve Kullanım Alanları
Aynalar ve Kullanım AlanlarıAynalar ve Kullanım Alanları
Aynalar ve Kullanım Alanları
 
Diffie hellman
Diffie  hellmanDiffie  hellman
Diffie hellman
 
Nanoteknoloji̇ ve boya sektörüne yansimalari
Nanoteknoloji̇ ve boya sektörüne yansimalari Nanoteknoloji̇ ve boya sektörüne yansimalari
Nanoteknoloji̇ ve boya sektörüne yansimalari
 
Nanoenerji̇
Nanoenerji̇Nanoenerji̇
Nanoenerji̇
 
Kocaeli Üniversitesi Randevu Yönetim Sistemi Raporu
Kocaeli Üniversitesi Randevu Yönetim Sistemi RaporuKocaeli Üniversitesi Randevu Yönetim Sistemi Raporu
Kocaeli Üniversitesi Randevu Yönetim Sistemi Raporu
 
Nanotıp
NanotıpNanotıp
Nanotıp
 
Grafen 21. Yüzyılın Maddesi (Graphene 21. Century's Matter)
Grafen 21. Yüzyılın Maddesi (Graphene 21. Century's Matter)Grafen 21. Yüzyılın Maddesi (Graphene 21. Century's Matter)
Grafen 21. Yüzyılın Maddesi (Graphene 21. Century's Matter)
 
Kanser tedavisinde nano
Kanser tedavisinde nanoKanser tedavisinde nano
Kanser tedavisinde nano
 
Grafen Çağı
Grafen ÇağıGrafen Çağı
Grafen Çağı
 
Nano teknoloji ve tip uygulamaları
Nano teknoloji ve tip uygulamalarıNano teknoloji ve tip uygulamaları
Nano teknoloji ve tip uygulamaları
 
Karbonnanotüpler ve teknolojide kullanımı
Karbonnanotüpler ve teknolojide kullanımıKarbonnanotüpler ve teknolojide kullanımı
Karbonnanotüpler ve teknolojide kullanımı
 
Okul otomasyon rapor
Okul otomasyon raporOkul otomasyon rapor
Okul otomasyon rapor
 

Similar a Web Crawlers

Temel SEO Eğitimi
Temel SEO EğitimiTemel SEO Eğitimi
Temel SEO EğitimiUğur Eskici
 
Performanslı site tasarımı ve Site performans ölçüm araçları
Performanslı site tasarımı ve Site performans ölçüm araçlarıPerformanslı site tasarımı ve Site performans ölçüm araçları
Performanslı site tasarımı ve Site performans ölçüm araçlarıbarisaydiner
 
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmee
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmeebi̇tikullanarakbilgiyeulaşmavebiçimlendirmee
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmeefatma_ela
 
Web Sitesi Geliştirme Adımları
Web Sitesi Geliştirme AdımlarıWeb Sitesi Geliştirme Adımları
Web Sitesi Geliştirme Adımlarıcmkandemir
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web ProgramlamaCihan Özhan
 
Seo ve bilinmeyen kelimeler
Seo ve bilinmeyen kelimelerSeo ve bilinmeyen kelimeler
Seo ve bilinmeyen kelimelerBilgi Rehberi
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysisAttaporn Ninsuwan
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web GeliştiriciliğiBurak Oğuz
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kamil Çömlekçi
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureDilaver Demirel
 
Wordpress SEO: Optimisations & Plugins
Wordpress SEO: Optimisations & PluginsWordpress SEO: Optimisations & Plugins
Wordpress SEO: Optimisations & PluginsBurak Pehlivan
 
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Abdullah Celik
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriEPICROUTERS
 

Similar a Web Crawlers (20)

Temel SEO Eğitimi
Temel SEO EğitimiTemel SEO Eğitimi
Temel SEO Eğitimi
 
Ajax
AjaxAjax
Ajax
 
Seo 101
Seo 101Seo 101
Seo 101
 
Performanslı site tasarımı ve Site performans ölçüm araçları
Performanslı site tasarımı ve Site performans ölçüm araçlarıPerformanslı site tasarımı ve Site performans ölçüm araçları
Performanslı site tasarımı ve Site performans ölçüm araçları
 
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmee
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmeebi̇tikullanarakbilgiyeulaşmavebiçimlendirmee
bi̇tikullanarakbilgiyeulaşmavebiçimlendirmee
 
Nginx sunu 2014
Nginx sunu 2014Nginx sunu 2014
Nginx sunu 2014
 
Web Sitesi Geliştirme Adımları
Web Sitesi Geliştirme AdımlarıWeb Sitesi Geliştirme Adımları
Web Sitesi Geliştirme Adımları
 
JavaScript Sunumu
JavaScript SunumuJavaScript Sunumu
JavaScript Sunumu
 
React.js Web Programlama
React.js Web ProgramlamaReact.js Web Programlama
React.js Web Programlama
 
Html5 Yenilikleri & SEO
Html5 Yenilikleri & SEOHtml5 Yenilikleri & SEO
Html5 Yenilikleri & SEO
 
Seo ve bilinmeyen kelimeler
Seo ve bilinmeyen kelimelerSeo ve bilinmeyen kelimeler
Seo ve bilinmeyen kelimeler
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysis
 
PHP Sunusu - 2
PHP Sunusu - 2PHP Sunusu - 2
PHP Sunusu - 2
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Wordpress SEO: Optimisations & Plugins
Wordpress SEO: Optimisations & PluginsWordpress SEO: Optimisations & Plugins
Wordpress SEO: Optimisations & Plugins
 
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking Yontemleri
 

Web Crawlers

  • 2. • Web crawler web’de bağlantı yapısını otomatik olarak inceleyip bu bağlantılardaki herbir sayfayı otomatik olarak bir depolama alanına indiren programdır. • Web crawling genelde bir arama motorunun veya web madenciliğinin ilk adımıdır. Web Crawler
  • 3. • Universal Crawler Universal crawler içeriğe bakmaksızın tüm sayfaları indirir. • Topic Crawler Sadece belirli başlıklardaki içerikleri indirir. Topic crawling de en önemli zorluklardan bir tanesi o konuya ait sayfaların nasıl tanınacağıdır. Web Crawler Universal Crawler Topic Crawler Crawler
  • 4. • Online mod : Online modda sayfalar indirilir indirilmez analiz edilir. • Offline mod : Offline modda ise sayfalar indirilip depolandıktan sonra analiz edilir. Web Crawler Online Mode Offline Mode Crawler
  • 5. • İş zekası uygulamaları , şirketler kendi rakipleri hakkında bilgi toplamak için kullanırlar. • Web sitelerini ve ilgili oldukları sayfaları gözlemleyerek yeni ilgili oldukları konularda yeni bir bilgi geldiğinde bundan haberdar olurlar. • Ayrıca kötü niyetli kullanımlar da vardır , özellikle mail adresi ve kişisel bilgilerin toplanması gibi. • En yaygın uygulaması ise arama motorlarıdır. Web Crawler Uygulamaları
  • 6. Fig. 1.1 Basit bir web crawler algoritmasının akış diagramı. Veri operasyonları sol tarafta kesikli çizgi ile gösterilmiştir. Seed URLs Start Initialize Frontier Dequeue URL from frontier Fetch Page Extract URLs and add to frontier Store Page Done? Stop Repository Frontier Yes No Web Web CrawlerAlgorithm Frontier : Ziyaret edilmemiş URL listesi.
  • 7. • Frontier first-in-first-out (FIFO) olarak implemente edilebilir. Bu durumda web crawler Breadth-First crawler olarak adlandırılır. • Yeni bulunan adresler listenin sonuna eklenir. Daha önce belirtildiği gibi frontier da sadece ziyaret edilmemiş bağlantılar tutulur. • Ziyaret edilmiş bağlantılar için crawl history dediğimiz bir yapı tutulur. Burada herbir link için son erişilen zaman tutulur. Bir bağlantının crawl history e girebilmesi için daha önceden ziyaret edilmiş olması gerekir. • Bu liste ile ziyaret edilen bağlantıların tekrardan ziyaret edilmesi önlenmiş olur ayrıca limitli bir boyutu olan frontier listesi de boş yere kullanılmamış olur. • Crawl history genellikle bir hash table da tutulur. Bu da bir bağlantıyı aramada bize O(1) işlem zamanı verir. Breadth-First Crawlers
  • 8. • Eğer frontier listesi FIFO yerine öncelikli kuyruk yapısı şeklinde uygulandıysa bu preferential crawler olarak adlandırılır. • Burdaki amaç belirli başlıktaki konuların analiz edilmesidir. • Preferential crawler da FIFO crawler a göre seed listesi seçimi çok daha önemlidir. • Frontier listesine yeni bir bağlantı eklenirken belirli bir puan verilerek eklenir ve liste her zaman sıralı şekilde tutulur. • Bu durumda frontier listesine yeni bir bağlantı eklemenin asimptotik analizine baktığımızda O(logF) olur , F burada frontier listesinin büyüklüğüdür. Preferential Crawler
  • 9. • Web crawler sayfaları getirirken bir web istemci gibi davranır , sayfayı barındıran web sunucuya bir HTTP request i gönderir ve dönen cevabı okur. • İstemci büyük sayfaların okunurken veya yavaş cevap veren sunuculardan istekte bulunurken zaman kaybetmemek için belli bir süre sonra bağlantı zaman aşımına uğramalıdır. • Genelde sayfa başına 10-100 KB den daha fazla indirilme olması engellenir. • İstemci durum kodlarını ve yönlendirmeleri alabilmek için sunucudan dönen cevabın başlık kısmını parse eder. • Ayrıca burada bir bağlantı döngüsünü engellemek için de kontroller vardır , eğer bir bağlantı birden fazla sayıda gelirse işlem durdurulur. Implementation Issues Fetching
  • 10. • Sayfalar indirildiğinde veya indirildikten sonra sayfadan belirli bilgilerin çıkarılması işlemi başlar. • Parsing işlemi basit örneğin sadece sayfadaki linkleri çıkarmak da olabilir daha karmaşık işlemler de olabilir. • Bu işlem, crawler örneğin bir arama motoruna destek veriyorsa indexleme işlemidir. • DOM (Document Object Model) HTML sayfasının etiket ağacı şeklinde gösterir. • Fakat standart formatta olmayan bazı formatlar crawler lar parse işlemi için başka bir sorundur , flash içerikli siteler , çok fazla javascript kullanan siteler buna örnektir. Implementation Issues Parsing
  • 11. <html> <head> <title>Here comes the DOM</title> </head> <body> <h2>Document Object Model</h2> <img align="right" alt="dom pict" src="dom.png"> <p> This is a simple <code>HTML</code> page to illustrate the <a href="http://www.w3.org/DOM/">DOM</a> </p> </body> </html> Implementation Issues Parsing
  • 12. Implementation Issues Parsing html head body Title Herecomes the DOM h2 img p Document Object Model This is a simple HTML Pageto illustrate the DOM code a
  • 13. <!DOCTYPE html> <html> <body> <p>An absolute URL: <a href="http://www.somehost.com">Some link</a></p> <p>A relative URL: <a href="tag_a.asp">The a tag</a></p> </body> </html>  <a> etiketlerini bul  <href> özniteliklerindeki değerleri al  Whitelist blacklist kontrolünü yap  Relative URL leri Absoulte URL lere çevir Implementation Issues Link Extraction and Canonicalization
  • 14. Implementation Issues Link Extraction and Canonicalization Description and transformation Example and canonical form Default port number Remove http://cs.indiana.edu:80/ http://cs.indiana.edu/ Root directory Add trailing slash http://cs.indiana.edu http://cs.indiana.edu/ Guessed directory* Add trailing slash http://cs.indiana.edu/People http://cs.indiana.edu/People/ Fragment Remove http://cs.indiana.edu/faq.html#3 http://cs.indiana.edu/faq.html Current or parent directory Resolve path http://cs.indiana.edu/a/./../b/ http://cs.indiana.edu/b/ Default filename* Remove http://cs.indiana.edu/index.html http://cs.indiana.edu/ Needlessly encoded characters Decode http://cs.indiana.edu/%7Efil/ http://cs.indiana.edu/~fil/ Disallowed characters Encode http://cs.indiana.edu/My File.htm http://cs.indiana.edu/My%20File.htm Mixed/upper-case host names Lower-case http://CS.INDIANA.EDU/People/ http://cs.indiana.edu/People/
  • 15. Implementation Issues SpiderTraps www.somehost.com Product X Product Y www.somehost.com www.somehost.com/x Product Y Product X www.somehost.com/x/y Product X Product Y www.somehost.com/x/y/x Bazı web sitelerinde dinamik linkler kullanılmaktadır örneğin bir e-ticaret sitesinde X ürününün olduğu sayfada Y ürününe ait bir bağlantı olabilir , aynı şekilde Y ürününün sayfasında da X ürününe başka bir bağlantı olabilir. Bu durumda yukarıda gösterildiği gibi elimizde aynı sayfaya karşılık gelen farklı bağlantılar olabilir.
  • 16. Implementation Issues Page Repository • Sayfalar indirildikten sonra depolama biriminde saklama yöntemlerinden birtanesi herbir sayfa için depolama biriminde bir dosya tutulmasıdır. • Dosya ismi olarak ise bağlantının özeti (hash) alınarak çıkan sonuç dosya ismi olarak kullanılabilir. www.somehost.com/x www.somehost.com/y www.somehost.com/z Hash Link Name 97da5d52d02cffcdaa30eba1efbe969b b3df6f576a7ce36687c84a492f9bd8ca d4e74562a8f166eefedd08a6e34b5b7a
  • 17. Implementation Issues Concurrency • Crawler network, CPU ve disk olmak üzere üç kaynağı da kullanır. • Sequential crawler bu durumda çok da verimli değildir çünkü her durumda üç kaynaktan ikisi boştadır. • Crawler ı hızlandırmak için en önemli geliştirmelerden birtanesi eşzamanlılıktır. • Eş zamanlılık multi process (çoklu işlem) veya multi thread kullanılarak sağlanabilir. • Herbir thread veya process bağımsız bir crawler gibi çalışır ve ortak erişim alanları vardır , örneğin frontier listesi tüm process veya thread ler tarafından ortak olarak kullanılmalıdır. • Concurrent crawler da dikkat edilmesi gereken frontier listesine birden fazla thread erişeceği için boş olup olmadığının kontrolü dikkatli yapılmalıdır.
  • 18. Implementation Issues Concurrency Seed URLs Frontier Frontier Manager Dequeue URL from Frontier Fetch Page Extract URLs and Add To Frontier Store Page Done? Repository Web Thread Manager ....... Thread/Process 1 Thread/Process N
  • 19. Universal Crawlers • Universal crawler lar yapısal olarak concurrent crawler dan farklıdır. • Universal crawlerlar iki önemli faktörü karşılamalıdır;  Performans : Universal crawler lar saniyede binlerce sayfayı işleyebilme özelliğine sahip olmalıdır.  Policy : Erişebildikleri kadar geniş web deki önemli sayfalara erişebilmelidirler. • Universal crawler ların concurrent crawler dan en önemli farkı thread/process yerine asynch soketler kullanılmasıdır. • Bu soketler bağlantıyı bloklamazlar böylece prosesler yüzlerce bağlantıyı aynı anda açık tutabilirler. • Bu da etkin bant genişliği kullanımı sağlar.
  • 20. Universal Crawlers Fetch Page Frontier Frontier Manager Dequeue URL from Frontier Extract URLs and Add To Frontier Store Page Done? Disk Web Thread Manager Thread Resolve DNS Asynch Sockets HTTP Get Storage Switch Disk Network Switch DNS Cache
  • 21. Universal Crawlers • Universal crawler frontier listesini paralel olarak tutabilir , herbir kuyruktaki bağlantılar bir sunucuya denk gelir. • Yükü birçok sunucuya dağıtarak birçok bağlantı aynı anda açık kalabilir ve böylece de TCP/IP bağlantısını açıp kapatmaktan da kurtulunur. (TCP handshake) • DNS bağlantılarında sıradan crawler lar herbir URL için farklı bir TCP bağlantısı açar, universal crawler TCP yerine UDP protokolünü kullanır. • Ayrıca DNS hafızada cache tutarak sorgulamalara hızlı bir şekilde cevap vermesi sağlanır.
  • 22. Universal Crawlers Coverage vs. Freshness vs. Importance • Universal crawler lar bile web deki tüm sayfaları erişemez. • Bu sebeple universal crawler lar daha önemli sayfalara odaklanırlar. • Önemli sayfalar bağlantı popülerliği ölçülerek (PageRank) değerlendirilirler. • Fakat web çok dinamik olduğundan dolayı indekslerin güncel olarak tutulabilmesi için ziyaret edilen sayfalar yeniden ziyaret edilmelidir. • Bu güncellik sağlanırken coverage ve freshness arasındaki bağlantı dikkate alınmalıdır.
  • 23. Focused Crawlers Coverage vs. Freshness vs. Importance • Tüm web içeriğini crawl etmek yerine sadece belirli kategorilerdeki sayfaları crawl etmek isteyebilliriz. • Focused crawler ların bir uygulaması Yahoo! Directory (dir.yahoo.com) veya Open Directory Project (ODP, dmoz.org) gibi web taksonomilerini (sınıflandırma bilimi) geliştirmektir. • Bu uygulamalarda amaç etiketlenmiş örrnek sayfalardan bir metin sınıflandırıcı oluşturmaktır. • Daha sonra sınıflandırıcı bu kategorideki sayfaları crawler a crawl etmesi için rehberlik eder. • Sınıflandırıcıyı eğitmek için çeşitli kategorilerden örnek sayfalar çekilir. • Sınıflandırma algoritması olarak Bayes sınıflandırıcısı kullanılabilir. • Taksonomideki herbir kategori için P(c|p) olasılığını hesaplamak için bir Bayes sınıflandırıcısı yapılandırılabilir. c -> Category p-> Crawled Page • Bu durumda P(top|p) = 1 olur. top-> root page
  • 24. Focused Crawlers Coverage vs. Freshness vs. Importance • c* ile gösterilen alanlar focused crawler ın ilgili oldukları kategorileri göstermektedir. • c1 sayfasından çıkarılan bağlantılar frontier listesine eklenecektir. • C1 sayfasının bağlı olduğu sayfalar crawler ın ilgi alanındaki kategoriden gelmektedir • C2 sayfası ise frontier listesine eklenmeyecektir. • C2 sayfası ilgilenilen kategoride değildir. C* C2 C* C’ top C1
  • 25. Focused Crawlers Coverage vs. Freshness vs. Importance • c* ile gösterilen alanlar focused crawler ın ilgili oldukları kategorileri göstermektedir. • c1 sayfasından çıkarılan bağlantılar frontier listesine eklenecektir. • C1 sayfasının bağlı olduğu sayfalar crawler ın ilgi alanındaki kategoriden gelmektedir • C2 sayfası ise frontier listesine eklenmeyecektir. • C2 sayfası ilgilenilen kategoride değildir. C* C2 C* C’ top C1
  • 26. Crawler Design Input PageDownloading Content Processing Priority Assignment Expansion • Input : Başlangıç adresleri. • Page Downloading : Bağlantılar indirilir ve bir kuyrukta saklanır. • Sequential (non-focused) crawler lar bu bağlantıları FIFO mantığıyla indirir. • Focused crawler lar ise bu bağlantıları belirli kriterlere sırasına göre yeniden sıralayabilir veya linkleri kuyruktan çıkarabilir. • Content Processing : İndirilien sayfalar analiz edilir ifade vektörlerine çevirilir • Priority Assignment : İndirilen sayfalardan çıkarılan bağlantılara öncelikleri belirlenerek kuyruğa aktarılır. • Expansion : Bağlantılar genişleme için seçilir ve 2. ve 5. adımlar belirli bir kritere gelene kadar tekrar edilir.
  • 28. Best First Crawler • Sayfalara indirme önceliklerini dokuman(d) ile konu (q) arasındaki benzerliği hesaplayarak atar. • Sayfa ve konu ifade vektörü şeklinde yazılır ve benzerlik VSM’ye (Vector Space Model) göre hesaplanır. qi : Konu (topic) vektöründeki ifadelerin «tf -idf» ağırlıkları di : Sayfa vektöründeki ifadelerin «tf -idf» ağırlıkları • Bir döküman için ifade ağırlıkları aşağıdaki gibi hesaplanır:
  • 29. Semantic Crawler • Semantik crawler da konuda geçen ifadelerle anlamsal olarak benzer ifadeler de alınarak konu genişletilir. • Birbirine benzer ifadeleri almak için «Wordnet» kullanılır. • Konu ve aday sayfalar arasındaki benzerlik içerdikleri ifadelerin anlamsal benzerliği ile hesaplanır. • Bir p sayfasının önceliği aşağıdaki şekilde hesaplanır. • K : Başlıktaki (konudaki) ifadeler • L : Sayfa veya bağlantı metnindeki ifadeler • Wk,Wl : İfade ağırlığı • Sim(k,l) : k ve l nin anlamsal benzerliği 1 Eğer l k ifadesinin eşdeğer setinde varsa Sim(k,l) 0 Diğer durumlarda
  • 31. • VSM ya da TVM (Term Vector Model) metin dökümanlarını vektör olarak ifade etmede kullanılır. • Döküman ve sorgular vektör olarak ifade edilir ; • dj = (w1,j,w2,j,....,wt,j) • q = (w1,q,w2,q,....,wt,q) • Herbir boyut farklı bir ifadeye (metinlerde ifade genellikle anahtar kelime) denk gelir. • Eğer sorgu ifadesi dökümanda varsa vektördeki değeri 0’dan farklı bir değer alır. • Bu değer birçok yöntemle hesaplanabilir. • En çok kullanılan yöntem «tf-idf» tir. • tf : term frequency • İdf : inverse document frequency Vector Space Model
  • 32. • td-idf kullanılarak d dökümanı için ağırlık vektörü hesaplanabilir. wt,d = tf.idf wt,d = tft,d. • tft,d : d dökümanında t ifadesinin frekansı • |D| : Döküman setindeki toplam döküman sayısı • |{d’ ∈ D | t ∈ d’}| : t ifadesini içeren toplam döküman sayısı • : idf (inverse document frequency) Vector Space Model log |D| |{d’ ∈ D | t ∈ d’}| log |D| |{d’ ∈ D | t ∈ d’}|
  • 33. • Örneğin d1 dökümanı ile q query si arasındaki benzerlik cosine similarity kullanılarak aşağıdaki gibi hesaplanır. Vector Space Model • Cosine Similarity: • A.B = ||A||.||B||. cosα
  • 35. • HMM crawler sayfa içeriği ve ilgili sayfalar giden yol arasında bir ilişki kurarak çalışır. • Eğitim seti oluşturmak için kullanıcı belli bir konudaki sayfaları bulur ve bu sayfaların konu ile ilgili olup olmadığını etiketler. • Daha sonra bu sayfalar k-means methodu kullanarak kümelenir. • Konu ile ilgilli sayfalar C0 kümesini oluştururken , ilgili olmayan sayfalar C1 den Ck ya kadar olan kümeleri oluşturur. HMM mo0deli de bu kümlerin üzerine kurulur. • Herbir sayfa iki durum ile karaketerize edilir ; • Visible State : Sayfanın içeriğine göre ait olduğu kümeye denk gelen durum • Hidden State : Sayfanın hedef sayfadan uzaklığı. Learning Crawlers
  • 36. • Sayfanın ait olduğu kümenin önceliği sayfa crawl edildiğinde hedef sayfaya götürme olasaılığı ile hesaplanır. Learning Crawlers • L0 : Hedef veya seviye 0 sayfalar • L1: Seviye 1 sayfalar(Hedeften 1 bağlantı uzaklıkta) • L2: Seviye 2 sayfalar (Hedeften 2 bağlantı uzaklıkta) • L3: Hedeften 3 bağlantı veya daha uzak sayfalar • C0: Küme 0 • C1: Küme 1 • C2: Küme 2 • Aynı clusterdaki sayfalar farklı seviyelere • Aynı seviyedeki sayfalar farklı clusterlara ait olabilir. • Sayfalar seviyelerine(hidden state) Li(i->seviye) ve ait oldukları clustera (cj) göre • karakterize edilir. Bu da HMM ile modellenir. Şekil : HMM Eğitim Seti
  • 37. • Bu modelde: 1- InitialprobabilityMatrix(Başlangıçolasılıkmatrisi) • π= {P(L0 , . . . ,Lstates -1)} states: number of hidden states • P(Li) -> 1 zamanında i gizlivdurumunda olma olasılığı • Bu olasılık her bir sayfaya eğitim setinde aynı gizli durumda olan sayfaların yüzdesi atanarak tahmin edilir. 2-TransitionProbabilitiesMatrix(GeçişOlasılık Matrisi) A = [aij] 0 <= i <= states Aij -> Eğer t anında Li durumunda ise, t+1 durumunda Lj de olma olasılığı Bu olasılık eğitim setinde Li’den Lj’ye geçişler sayılarak tahmin edilir ve bu değer Liden olan tüm geçişlere göre normalize edilir. Learning Crawlers
  • 38. Learning Crawlers 3- EmissionProbabilitiesMatrix(Durum Olasılık Matrisi) B = [bij] 0 <= i <= states 0 <= j < clusters (Toplam cluster sayısı) • Bu olasılıklar Li durumunda Cj clusterına ait olan sayfaların, Li durumunda olan tüm sayfalara normalize edilmesi ile bulunur. • Tüm bu bileşenler (π ,A ve B) crawling başlamadan önce eğitim seti üzerinden hesaplanır. • Crawler sayfayı indirir, sayfaların vektörlerini (VSM kullanarak) çıkarır ve herbir sayfayı K- nearest neighbours algoritmasını kullanarak kümelere atar. • Sayfanın hedef sayfaya götürme olasılığı HMM parametreleri kullanılarak hesaplanır. • Bu olasılık sayfada bulunan linkin ziyaret edilme önceliğine karşılık gelir. • HMM model parametreleri kullanılarak bir sonraki adımdaki durum tahmini olarak hesaplanır. • Bu tahmini değeri hesaplamak için her bir ziyaret edilen sayfa a(Lj , t) , j= 0,1,...states ile ilişkilendirilebilir. • a(Lj , t) -> t zamanda Lj durumundaki sayfanın indirilme olasılığı • Bu değer aşağıdaki gibi recursive olarak hesaplanabilir. (1)
  • 39. Learning Crawlers • Aij : A matrisindeki Li’den Lj durumuna geçiş olasılığı • Bjct : B matrisindeki Lj durumunda n ct kümesinin çıkış olasılığı • A(Lj , 0) : Bitiş adımı ise başlangıç olasılık matrisi π ‘den alınır. • A(Lj , t+1) : bir sonraki adımda Lj durmunda olma olasılığı • Bir sonraki adımda L0 (relevant page) durumunda olma olasılıgı HMM crawler tarafından sayfalara atanan önceliktir. • Eğer iki küme eşirt olasılık veriyor ise 1 ve 2 adımlarında daha yüksek olasılıkla hedef sayfaları gösteren kümeye daha yüksek öncelik atanır. (HMM crawlerlarda öncelik ataması) • Bir başka yaklaşım olan «Proposed HMM Crawler»da ise sayfanın öncelik skoru HMM crawler tarafından hesaplanan önceliklerin ortalaması ve centroid vektör (ilgili sayfaların kümesini sayfanın ifade vektörü(term vektör) ) ile gösterir. (2)
  • 40. Proposed Crawler UygulamaAdımları • Giriş : Eğitim seti ,aday sayfa (p) • Çıkış: p sayfasına atanan öncelik değeri 1. K-Means metodu ile eğitim setini kümeler. 2. Π,A,B matrisleri Centroid (Cr) hesaplanır. 3. P sayfasının bir clustera (Ct) K-Nearest Neighbours ile sınıflandırılması 4. Geçerli bir adım için gizli durum olasılıklarının hesaplanması. 5. Bir sonraki adım için gizli durum olasılıklarının hesaplanması 6. PriorityHMM(P) = a(L0 ,t+1) önceliğinin hesaplanması 7. Similarity (p,cr)-> sayfa içeriği ve ilgili sayfaların centroidi arasındaki benzerliğin VSM kullanılarak hesaplanması 8. Sayfa önceliğinin hesaplanması
  • 42. Crawler Etiği • Crawlerlar özellikle web serverlar üzerinde genel olarak band genişliğini çok fazla kullanırlar. • Eğer bir crawler bir web sunucusuna çok hızlı bir şekilde istek gönderiyorsa (sn de 10 veya daha fazla) crawler lar bu durumda web kaynaklarını aşırı derecede kullanıyor demektir. • Eğer bu istekler bir web sunucusunun kullanıcılara (end user) cevap veremeyecek kadar fazlaysa crawler tarafından servisin kısıtlanması atağı (denial of service attack) yapmış oluruz. • Bu durumun önüne geçmek için örneğin concurrent crawler da frontier yöneticisi tarafından thread lere URL ataması yapıldığı sırada yapılabilir. Web SunucuYükü
  • 43. Crawler Etiği • Crawlerlar User-Agent http başlıklarını kullanarak crawl ettikleri web sayfalarının yöneticilerine bilgi vermelidirler. • Bu bilgi sadece crawler ın ismi ve versiyonu değil aynı zamanda crawler hakkında detaylı bilgi veren bir bağlantı ve bir mail adresi de içermelidir. • Bunun için genellikle crawler için bir web sayfası oluşturulur ve bu web sayfası http başlığında gönderilir. User-Agent HTTP Header
  • 44. Crawler Etiği • Bu kural crawler lar ile ilgili bir de facto(genel kabul görmüş) kuralıdır. • Bu standart web sunucu yöneticilerinin crawler a hangi sayfalara erişemeyeceği bilgisini verebilmesini sağlar. • Bu işlem robots.txt adı verilen web serverın kök dizininde bulunan (http://www.somehost.com/robots.txt) isteğe bağlı bir dosyadır. • Bu dosya ile farklı robotlara farklı kurallar verilebilir. (Bir önceki konuda robotların nasıl tanınabildiğini anlatmıştık) Robot (Exclusion) Dışlama Protokolü User-agent: * Disallow: / robots.txt
  • 45. Crawler Etiği • Bu kurallar web sunucuları etil olmayan crawler lardan koruyamaz. • Web sunucu robots.txt yi kullansa bile bu crawler ları engelleyen birşey değildir robots.txt nin olması isteğe bağlı olduğu gibi bu crawler ın bu kurallara uyması da isteğe bağlıdır. • Fakat bu kuralları takip etmeyen crawler lar birçok web sunucu tarafından IP bazlı engellenmektedir. • Fakat yine de crawler lar kendilerini bir browser gibi tanıtarak (HTTP başlığında user-agent alanında) işlemlerini yapabilmektedir. • Bu da bu tip crawler ların anlaşılabilmesini güçleştirmektedir. BuAdımlarYeterli Mi?
  • 47. • Durum uzayında bir durumdan diger bir duruma ugrayan sistem. • Bir sonraki durum sadece o anki duruma bağlıdır, öncesinde olan olaylar bir sonraki duruma geçişi etkilemez. Markov Zinciri • Markov zincirleri genelde yönlü graph kullanılarak tanımlanır. • Graphın kenarları bir durumdan diger duruma geçişteki olasılığı gösterir. Basit iki durumlu markov zinciri
  • 48. 1 = A, 2 = B, 3 = C Geçiş matrisi: 0.9 0.075 0.025 P= 0.15 0.8 0.05 0.25 0.25 0.5 • Bu durumda durumlar üzerindeki dağılım stochastic(olasılık) vektörü (tüm elemanların toplamı 1 olan ve negatif elemanı olmayan) olarak yazılabilir ve x(n+1) = x(n) p olur. • Yani bir n zamanında durum 2(B) ise 3 zaman sonra (n+3) dağılım: x(n+3) = x(n+2) p x(n+2) = x(n+1) p x(n+1) = x(n) p =(x(n+1) p)p = x(n+1) p2 0.9 0.075 0.025 3 = 0 1 0 0.15 0.8 0.05 0.25 0.25 0.5 = 0.375 0.56825 0.07425 Markov Zinciri A B C
  • 50. • Basit bir markov modelinde (örn:Markov zinciri), durum gözlemciye (visible) görünürdür. • Bu durumda tek parametre durum geçiş olasılıklarıdır. • HMM gözlemlenmeyen (Gizli-hidden) durumların da olduğu bir markov modelidir. • HMM’de durum direkt olarak visible değildir; fakat duruma bağlı olan çıkış visible’dır. • Her bir durum mümkün olan çıkışlar üzerinden bir olasılık dağılımına sahiptir. • Bu sebeple HMM tarafından üretilen çıkışların sırası, bize durumların sırası hakkında bilgi verir. Hidden Markov Model
  • 51. • X - Durumlar • Y - Gözlemler • a - Durum geçiş olasılıkları • B - Çıkış olasılıkları Hidden Markov Model
  • 52. • vazo state Bir odada 3 vazo var. (x1, x2 ,x3) • Her bir vazoda bilinen 4 adet top var. (y1 ,y2, y3) • Odalardaki vazolardan birinden rastgele bir top alınıyor. Ve bu top taşıma bandına koyuluyor. • Gözlemci topların sırasını görebiliyor fakat topların alındıgı vazoların sırasını göremiyor. • Vazonun seçilmesi için belirli bir prosedür var: • n. Top için seçilen vazo rastgele bir sayıya ve (n-1). Top için seçilen vazoya bağlı. • Bu markov prosesi gözlemlenemez. Sadece topların sırası gözlemlenebilir bu nedenle HHMM olarak adlandırılır. • Gözlemci vazoların yapısını ve örnek gelen 3 topun sırasını gözlemlediği halde gözlemci 3. topun hangi vazodan alındığına emin olamaz fakar herbir vazodan gelme olasılıklarını bulabilir. Hidden Markov Model
  • 53. • Rainy,Sunny -> States • Work,Shop,Clean -> Observations • Output Probabilities Rainy {walk : 0.1, shop:0.4 , clean : 0.5} Sunny {walk : 0.6, shop:0.3 , clean : 0.1} Hidden Markov Model