Web crawler (někdy také spider) je v informatice specializovaný internetový bot, který prochází World Wide Web za účelem vytvoření obrovské databáze (web index). Navštěvuje automaticky veškeré dostupné webové stránky a tím umožní zaznamenat, která slova kde viděl. Webový vyhledávač pak na dotaz uživatele (jedno nebo více slov) může z web indexu odpovědět, na kterých stránkách jsou hledaná slova k nalezení.

Přehled

editovat

Web crawler začíná se seznamem URL adres k návštěvě, které prohledává a přes HTTP protokol si o nich ukládá důležitá data jako je jejich obsah (text), metadata (datum stažení stránky, hash či změny od poslední návštěvy apod.), případně informace o zpětných odkazech. Identifikuje všechny hypertextové odkazy (tj. obsah HTML atributů src a href) a přidává je do seznamu URL adres, které bude stahovat v budoucnu.

Data posbírána crawlerem se ukládají na pevné disky o vysokých kapacitách a slouží jako databáze pro příští návštěvy. Na internetu je teoreticky nekonečné množství webových stránek a není tak v reálných schopnostech crawlera navštívit a stáhnout všechny webové stránky. Z tohoto důvodu se crawler řídí výběrovou politikou, která nastavuje pravidla a parametry, podle kterých crawler navštěvuje jednotlivé stránky a následně vyhodnocuje, zda stránku stáhne a uloží do databáze.[1]

Vyhledávací politiky

editovat

Chování crawlera je výsledkem kombinace zásad:[2]

  • Výběrovou politikou, která určuje stránky, které budou staženy,
  • Politikou opětovných návštěv, která určuje, v jakých intervalech budou prověřovány změny na stránkách,
  • Zdvořilostní politikou určující chování crawlera, aby nedošlo k přetížení serveru a
  • Politika paralelního zpracování, která pomáhá koordinovat distribuované webové vyhledávání.

Výběrová politika

editovat

Vzhledem k aktuální velikosti webu mohou i velké vyhledávací stroje pokrývat pouze část veřejně přístupné části. Studie z roku 2009 ukázala, že i největší vyhledávače nezahrnují více než 40–70% indexovatelného webu.[3] Jelikož crawler vždy stahuje jen zlomek navštívených webových stránek, je velmi žádoucí, aby stažený zlomek obsahoval nejrelevantnější stránky a ne jen náhodnou ukázku webu. Významnost webu se určuje dle několika kritérií jako je počet na něj vedoucích odkazů (zde je hodnocena i věrohodnost odkazů), zpětné odkazy nebo PageRank.

Politika opětovných návštěv

editovat

Pro zajištění efektivního sběru dat a aktuálnosti indexovaného obsahu je velmi důležité zajistit optimální časové intervaly pro opětovné navštívení stránek a aktualizaci indexovaných údajů. Časový interval mezi jednotlivými návštěvami je určen mnoha faktory, jako je frekvence změn na stránce, její PageRank, ale i technické omezení serveru (aby nedošlo k jeho přetížení). K stanovení, zda stránku stáhnout nebo ne jsou zpravidla používány funkce aktuálnosti (Freshness) a stáří (Age).[4]

Obě funkce lze vyjádřit následovně:

Aktuálnost je funkce data poslední změny t stránky p oproti datu stránky v databázi vyhledávače.

 

Stáří stránky vyjadřující neaktuálnost lokální kopie stránky p v databázi vyhledávače v čase t je vyjádřeno funkcí:

 

Politika zdvořilosti

editovat

Crawleři procházejí a stahují data z webových stránek mnohem rychleji než lidé, a proto mohou mít škodlivý vliv na zatížení serveru. Netřeba dodávat, že pokud jeden prohledávač provádí více požadavků za sekundu a/nebo stahuje velké soubory, server by těžko zvládl nápor více crawlerů současně nebo v určitých případech třeba i jen jediného crawlera procházejícího několik webů umístěných na jednom serveru souběžně.

Jak uvádí Martin Koster, největšími problémy, které crawleři způsobují, jsou:[5]

  • síťové zdroje, protože crawleři vyžadují značnou šířku pásma a operují na vysokém stupni paralelního přístupu po dlouhou dobu,
  • přetížení serverů, hlavně tehdy pokud je frekvence přístupů k danému serveru příliš vysoká,
  • špatně napsaní crawleři, které dokážou způsobit výpadek serveru nebo ty, které stahují stránky, které neumějí zpracovat,
  • soukromé sběrače dat, pokud jsou nasazeny příliš mnoha uživateli, mohou způsobit narušení sítí nebo webových serverů.

Částečným řešením je omezení nebo zákaz vstupu robotů na web pomocí souboru robots.txt. Tento textový soubor stanovuje, které části webových serverů jsou pro crawlery přístupné. Lze zde také povolit/zakázat přístup konkrétním crawlerům.

Politika paralelního zpracování

editovat

Při využívání crawlera, který je schopen paralelního spouštění více procesů je nutné zajistit, aby nedocházelo k paralelním nebo opakujícím se přístupům ke stejnému zdroji. Cílem je maximalizovat rychlost stahování při minimalizaci režie z paralelizace a zabránit opakovaným stahováním stejné stránky. Aby nedocházelo ke stahování stejné stránky více než jednou, systém procházení vyžaduje politiku přidělování nových adres URL zjištěných během procesu procházení, protože stejná adresa URL může být nalezena dvěma různými procházeními.

Příklady

editovat
  • Bingbot je web crawler pro internetový vyhledávač Bing společnosti Microsoft.
  • Googlebot je hlavní vyhledávací robot společnosti Google, která v současné době provozuje nejrozšířenější webový vyhledávač (2017).
  • WebCrawler byl součástí prvního vyhledávacího systému, který umožňoval fulltextové vyhledávání.
  • SeznamBot je robot společnosti Seznam.cz, a.s., provozující největší český internetový vyhledávač.
  • Scrapy je open source web crawler framework napsaný v jazyce Python a licencovaný v rámci BSD licence.
  • SiteOne Crawler je open source crawler pod licencí MIT licence, který provádí hloubkovou analýzu celé webové stránky z mnoha pohledů a umí celý web stáhnout i pro offline použití, či potřeby archivace. Nabízí grafickou aplikaci pro běžné uživatele, ale i command-line nástroj pro pokročilé uživatele.

Reference

editovat

V tomto článku byl použit překlad textu z článku Web crawler na anglické Wikipedii.

  1. Šimko, Martin. Programujte.com [online]. Vystaveno roku 2014 [cit. 6. 5. 2017] <http://programujte.com/clanek/2014010200-princip-fungovani-fulltextovych-vyhledavacu-i-crawler/>
  2. PhD Thesis: Web Crawling | Carlos Castillo (ChaTo). chato.cl [online]. 2004 [cit. 2017-05-08]. Dostupné online. 
  3. GULLI, A.; SIGNORINI, A. The Indexable Web is More Than 11.5 Billion Pages. In: Special Interest Tracks and Posters of the 14th International Conference on World Wide Web. New York, NY, USA: ACM, 2005-01-01. Dostupné online. ISBN 1595930515. DOI 10.1145/1062745.1062789. S. 902–903.
  4. CHO, Junghoo; GARCIA-MOLINA, Hector. Synchronizing a Database to Improve Freshness. In: Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data. New York, NY, USA: ACM, 2000-01-01. Dostupné online. ISBN 1581132174. DOI 10.1145/342009.335391. S. 117–128.
  5. Koster, M., Robots in the web: threat or treat? 1995 ConneXions