# Veebiämblik

Veebiämbliku arhitektuur
**Veebiämblik** (ingl *web spider*, *web crawler*) on automatiseeritud programm, mis otsib etteantud kriteeriumide järgi uusi veebidokumente ja lisab nende andmed otsinguandmebaasidesse. Veebiämbliku ülesanne on analüüsida iga külastatava lehe sisu, koguda mitmesugust teavet, näiteks pealkirjade, piltide, märksõnade ja linkide kohta.

## Esimesed veebiämblikud

Veebiämbliku mõiste tekkis koos veebi (ingl *web*, täisnimi *World Wide Web*, WWW) arenguga 1990. aastatel. Esimese veebiämbliku töötas välja Matthew Gray 1993. aastal. Selle nimeks sai World Wide Web Wanderer, veebiämbliku eesmärgiks oli loendada ligipääsetavate lehtede arvu ning mõõta seeläbi veebi suurust. 1994. aastal töötas Brian Pinkerton välja WebCrawleri. WebCrawleri otsingumootor hakkas indekseerima veebisaitide täistekste, mis võimaldas kasutajatel otsida veebilehel ükskõik millist sõna, mis muutis kõigi tulevaste otsingumootorite standardit. Oliver McBryani 1994. aastal välja töötatud World Wide Web Worm (WWWW) oli veel üks esimesi veebiämblikupõhiseid otsingumootoreid. Wormi andmebaasis oli 1994. aasta seisuga kogutud üle 300 000 multimeediumivara ja indekseeritud üle 100 000 veebilehe.

## Tööpõhimõte

Veebiämblikud liiguvad veebis hüperlinkide kaudu saadaolevatele veebisaitidele, indekseerivad iga veebisaidi sisu ning avavad kõik leitud URL-id uute veebisaitide analüüsimiseks, kontrollides samal ajal, kas kõik HTML-failid ja lingid on ka asjakohased.

Veebiämblike tööpõhimõte on lühidalt järgmine.

* Veebiämbliku töö algab ette antud veebiaadressidest.
* Tehakse HTTP-päringuid, et koguda uusi veebilehti, mis on seotud algsete lehtedega.
* Seejärel analüüsib ämblik veebilehe HTML-koodi, et koguda asjakohast teavet, näiteks pilte.
* Kogutud ja külastamata veebilehed lisatakse järjekorda.
* Järjekorrast valitakse uus veebiaadress ning seejärel korratakse kogu protsessi uuesti, kuni enam järjekorras lehti pole või jõutakse mingi seatud piirini.
* Kõike seda tehes salvestatakse veebilehtede andmed andmebaasi.

Sealjuures peaksid veebiämblikud järgima ka eetikanorme ja veebipõhist protokolli (robots.txt faili), mis annab juhiseid, milliseid veebilehti võib ämblik külastada ja milliseid peaks see ignoreerima.

## Veebiämblike tüübid

Veebiämblike implementeerimisel on proovitud erinevaid lähenemisviise. Järgnevas loetelus tutvustatakse neid lähemalt.

### Suunatud veebiämblik

Suunatud veebiämblik (ingl *Focused web crawler*) on loodud selleks, et koguda omavahel seotud lehti, mis vastavad ühele kindlale teemale. Kuna allalaadimiste hulk on väiksem, siis on see tüüp ökonoomsem riistvara ja võrguressursside suhtes.

### Järkjärguline veebiämblik

Seda tüüpi veebiämblik (ingl *Incremental crawler*) jätkab veeblehtede külastamist ka pärast algset kogumist mingi piiri ulatuses, et järk-järgult uuendada veebilehtede loendit. Uuendamise käigus värskendab veebiämblik olemasolevaid lehti ning asendab vähem olulised lehed olulisematega.

### Hajus veebiämblik

Hajus veebiämblik (ingl *Distributed crawler*) kasutab hajutatud arvutustehnikat, kus mitu ämblikku töötab koos veebi maksimaalse katvuse tagamiseks. Keskne server juhib sõlmede suhtlust ja sünkroonimist.

### Paralleelne veebiämblik

Paralleelse veebiämbliku (ingl *Parallel crawler*) puhul jagatakse veeb osadeks ning iga paralleelne lõim vastutab ühe osa eest. See suurendab allalaadimiskiirust ja võimaldab efektiivselt hallata suuremahulist veebi. Erinevad lõimed võivad töötada füüsiliselt erinevates kohtades, mistõttu on võrgukoormus väiksem ja üldine jõudlus parem.

## Rakendusvaldkonnad

Veebiämblik kõige tavalisem eesmärk on luua andmebaasi veebilehe kohta indeks, mistõttu on veebiämblikud otsingumootorite töö aluseks. Kuid veebiämblikel on ka palju muid kasutusalasid. Konkurentsianalüüsis saab veebiämblik jälgida konkurentide hinnapoliitikat ja tooteinfot. Ämblikke saab kasutada ka turunduses, kus veebiämblikud aitavad koguda tarbijate eelistuste andmeid, võimaldades sisukamate reklaamistrateegiate loomist. Teadusuuringutes kasutatakse veebiämblikke suuremahuliste andmekogumisprojektide jaoks, hõlbustades näiteks ühiskondlike trendide mõistmist.

## Eetilised kaalutlused

Kuigi veebis roomamine on legaalne tegevus, tõstatab veebiämblike kasutamine siiski eetilisi küsimusi. Põhjuseks tuuakse, et internetis leiduvate andmete kasutamise õigusraamistik on ebaselge ning valdkonnas puuduvad ühtsed eeskirjad. Rõhutatakse, et andmekraapimisel on oluline olla teadlik, kuidas ämblik võib kahju tekitada, ning rakendada meetmeid, et selliseid olukordi vältida. Halvasti programmeeritud veebiämblik võib põhjustada näiteks teenusetõkestusründeid, mille tavapärane eesmärk on teatud veebilehe kättesaadavuse häirimine või peatamine, muutes selle kasutajatele kättesaamatuks. Andmekraapimisega seotud DoS-rünnakud on sageli tahtmatud, kuid kahjude vältimiseks peab ämblik olema implementeeritud korralikult, samuti peaks veebiämblik pidama kinni robots.txt failist, kus on kirjeldatud veebilehe omaniku poolt, kuidas võiks lehel toimida ning vajadusel piirama päringute sagedust. Individuaalse privaatsuse seisukohast tuuakse välja, et veebikraapimine võib ohustada isikute privaatsust, kuna kogutud andmed võivad tuvastada isikuid ka anonüümsete kasutajate puhul. Õiguste rikkumine võib toimuda ka siis, kui kasutatakse tarbijate andmeid ilma nõusolekuta. Organisatsioonide privaatsuse ja ärilise väärtuse seisukohast võib veebikraapimine paljastada ärisaladusi, omandiõigusi ja muid konfidentsiaalseid andmeid, kahjustades organisatsiooni mainet ja tuues kaasa rahalisi kahjusid. Samuti võivad veebikraapimisega seotud tegevused mõjutada andmekvaliteeti ja otsustusprotsesse, põhjustades valeandmete levikut ja tuues sellega kaasa negatiivseid tagajärgi .

## Tuntud veebiämblikke

### Ettevõttesisesed veebiämblikud

* **Applebot** on Apple'i veebiämblik. Näiteks Siri ja Spotlight Suggestions kasutavad Applebotti.
* **Bingbot** on Microsofti veebiämblik, mida kasutatakse teabe kogumiseks, et luua veebist otsitav register. Bingbot on väidetavalt maailmas 3. kõige aktiivsem ämblik.
* **Baiduspider** on Baidu ametlik veebiämblik. Baiduspider on kolme tüüpi roomiku üldnimetus: lauaarvuti-ämblik, mis simuleerib kasutajat töölaual; mobiilseadme-ämblik, mis simuleerib kasutajat mobiilseadmes; ja miniprogrammide ämblik, mis simuleerib kasutajat Baidu mobiilirakenduses.
* **DuckDuckBot** on DuckDuckGo veebiämblik.
* **Googlebot** on Google'i kahte tüüpi veebiämblike üldnimi:
	+ Googlebot Desktop – töölaua-ämblik, mis simuleerib kasutajat töölaual.
	+ Googlebot Smartphone – mobiilseadme-ämblik, mis simuleerib kasutajat mobiilseadmes.

### Kommertsveebiämblikud

* **Diffbot** – programmeeritav veebiämblik, mis on saadaval API-na.
* **SortSite** – veebilehtede analüüsimiseks mõeldud veebiämblik.
* **Swiftbot** – tarkvarateenusena saadaval Swiftype'i veebiämblik.

### Avatud lähtekoodiga veebiämblikud

* **Apache Nutch** – muudetav ja skaleeritav veebiämblik Javas, mis põhineb Apache Hadoopil ja on laiendatav vastavalt kasutajaspetsiifilistele ülesannetele.
* **Heritrix** – Interneti arhiivimiseks mõeldud ämblik, mis on kirjutatud Javas.
* **HTTrack** – veebiämblik, mis võimaldab kasutajatel ülemaailmseid veebisaite Internetist kohalikku arvutisse alla laadida.
* **Scrapy** – avatud lähtekoodiga raamistik, mis on kirjutatud Pythonis.

Ettevõttesisesed veebiämblikud on olulised oma platvormide veebiotsinguteks ja teenuste toimimiseks. Kommertstarkvara veebiämblikud pakuvad spetsiifilisi analüüsivahendeid ja teenuseid äriliseks otstarbeks. Avatud lähtekoodiga veebiämblikud võimaldavad kohandatud ja skaleeritavaid veebiämblikulahendusi vastavalt vajadustele.

## Viited