# Web scraping

Web scraping software-programen bidez web guneetatik informazioa ateratzeko erabilitako teknika bat da. Normalean, programa horiek Webean pertsona bat nabigatzen dutela simulatzen dute, HTTP protokoloa eskuz erabilita, edo nabigatzaile bat aplikazio batean txertatuz.

Azken urteotan, **web-scraping**-a asko erabiltzen da web-posizionamenduaren sektorean, kalitatezko edukiak sortzeko datu kopuru handiak jaso eta antolatzeko dituen gaitasunarengatik.

## Teknikak

* Pertsonen bidez egindako "kopiatu eta itsatsi": batzuetan *web-scraping-eko teknika onenak ere* ezin ditu lortu pertsona batek eskuzko azterketan lortzen duena, eta beste batzuetan hori izaten da irtenbide onena webgune horrek software automatizatuarekin kontsultak egiteko oztopoak jartzen baditu.
* Adierazpen erregularrak erabiltzea: Egokia izan daiteke kasu batzuetan, nahiz eta normalean ez den gomendatzen HTML formatuak analizatzeko.
* HTTP protokoloa: web orrialde estatiko eta dinamikoak lor daitezke socket-ak erabiliz urruneko zerbitzariari HTTP eskaerak eginez.
* Datu-meatzaritzako algoritmoak: webgune askotan orri asko dinamikoki sortuta dituzte datu-base batetik abiatuta. Datu kategoria berean agertzen, normalean, antzeko orriak erabiliz *, gidoi* edo txantiloi bat. Datu-meatzaritzako teknikak erabiliz detektatu daitezke antzeko egitura duten orri ugari horiek, bertan dauden txantiloiak antzeman eta eduki horiek erauzi.
* HTML analizatzaileak: XQuery eta HTQL lengoaiek, adibidez, erabili daitezke HTML dokumentuak analizatzeko, edota horien  edukiak berreskuratu eta eraldatzeko.
* *Web-scraping-rako aplikazio komertzialak*: irtenbide pertsonalizatuak egiteko badira **web-scraping** egiteko hainbat aplikazio eskuragarri. Aplikazio horiek automatikoki ezagutzen dute orri-egitura jakin bat, edo interfaze bat eskaintzen diote erabiltzaileri orrietako eremu interesgarriak zein diren aukeratzeko. Horrela zeregin horiek egiteko ez da beharrezkoa kodea eskuz idaztea.
* Informazio semantikoa antzematea: aztertu nahi diren orrietan egon daitezke metadatuak edo zenbait informazio semantiko erabilgarriak. Horrelako oharrik baldin badago, mikroformatuak esaterako, horiek erabilgarriak izan daitezke dokumentuaren DOMa analizatzerakoan.

## Urratsak *scraper-rak geldiarazteko*

Administratzaileak hainbat teknika erabil ditzake webgune batean scraperren eskaerak geldiarazteko edo oztopatzeko:

* Gehitu sarrerak *robots.txt* fitxategiari. Google eta beste bot batzuk geldiarazi daitezke horrela.
* IP helbidea blokeatzea. Erabiltzaileek ezingo dira nabigatu helbide horretatik.
* Desgaitu webguneak eskaintzen duen edozein API.
* Bot edo scraper batzuek erazagutzen dute nor diren, eta horri esker, blokeatuak izan daiteke, esaterako "googlebot".
* IP helbide jakin baten gehiegizko trafikoa detektatzea.
* *Captcha* bat gehitzea web gunean, edo bestelako egiaztapen-sistemaren bat. Ez da bermatzen blokeo osoa lortuko dela, baina oztopatu egiten da neurri batean.
* Bot-en aurkako zerbitzu komertzialak: enpresa batzuek *antibot* eta *antiscraping* zerbitzuak eskaintzen dituzte.
* JavaScript eta AJAX maizago erabiltzea. Horrela zailagoa izango da *scraperrentzat* nabigatzaile arruntaren eskaerak simulatzea.

## Tresna nabarmenak

* Apache Camel
* Automation Anywhere
* Convertigo
* cURL
* Data Toolbar
* Firebug
* Greasemonkey
* HtmlUnit
* Node.js
* HTTrack
* iMacros
* Aptana Jaxer
* nokogiri
* watir
* Wget
* WSO2 Mashup Server
* HtmlAgilityPack
* BeautifulSoup
* Scrapy

## Ikus ere bai

* Datu-meatzaritza
* Corpus linguistiko
* Web crawler
* Metadata

## Kanpo estekak