Web scraping

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání

Web scraping, web harvesting nebo extrakce dat z webu označují způsob získávání strukturovaných dat z webových stránek. Spočívá v extrahování dat umístěných na webových stránkách do užitečnějšího formátu, který je možné snadno dále strojově zpracovávat. Web scraping je sice možné provádět ručně, častěji se ale termín používá pro automatické harvestování, prováděné pomocí web crawlerů. Web harvesting je formou stahování dat z webu, v průběhu kterého se z webu stahují konkrétní data a ukládají se do databáze nebo tabulky, aby s nimi bylo možné později pracovat.

Web scraping webové stránky zahrnuje její načtení a extrakci z ní. Fetching je stahování stránky (které provádí prohlížeč, když si uživatel stránku prohlíží). Proto je web crawling hlavní součástí web scrapingu, aby se stránky získaly pro pozdější zpracování. Po načtení může následovat extrakce. Obsah stránky může být analyzován, prohledáván, přeformátován, mohou z ní být data zkopírovaná do tabulky nebo vložena do databáze. Web scrapery obvykle ze stránky něco vyjmou, aby to využily k jinému účelu na jiném místě.

Využití web scrapingu[editovat | editovat zdroj]

Web scraping se používá například k získávání kontaktů i jako součást aplikací používaných k indexaci webu, vytěžování webu a získávání dat z webu. Využít jej můžete pro sledování změn online cen konkrétních produktů a porovnávání cen, k získávání recenzí produktů (ke sledování konkurence), shromažďování nabídek nemovitostí, sledování údajů o počasí, zjišťování změn webových stránek, výzkumu, sledování online přítomnosti a reputace, web mashup a integraci webových dat. Velmi často získáváte data z webu proto, abyste na jejich základě mohli provádět nějaké další akce (automaticky dostávat e-mailové upozornění, pokud se na webu něco změní, nebo automaticky odesílat změněná data do firemního CRM). Tomu se říká automatizace webu.

Používá se vždy, když webová stránka, která vás zajímá, nemá žádné API rozhraní - to znamená, že neposkytuje žádný způsob, jak stáhnout data ve strukturované podobě. Nebo jeho rozhraní API neposkytuje všechna data nebo je jednoduše příliš obtížné je používat.

Mezi obvyklé případy, kdy se scraping dat z webu hodí, patří situace, kdy potřebujete kontaktní údaje z webových stránek (contact scrapping). Technicky jde o vyhledání a zkopírování jmen, telefonních čísel, e-mailových adres lidí nebo firem a jejich URL adres do seznamu. Scrapovat je možné jen takové údaje, které jsou veřejně dostupné, například z webových stránek firem, nebo veřejných profilů na sociálních sítích. K dalším využitím patří například sledování konkurence a cen, které nabízí u konkrétních produktů. Crawlery pravidelně stahují data o cenách produktů konkurence, nebo reagují na pohyb a změnu dané ceny. Toto využívání je běžné napříč všemi trhy - od e-commerce až po farmaceutický byznys. Web Scaping je možné využít i pokud chcete oslovit nové zákazníky nebo na základě dat na webu získat přehled o trhu.

Jaký problém Web scraping řeší?[editovat | editovat zdroj]

Webové stránky jsou vytvářeny pomocí textových značkovacích jazyků (HTML a XHTML) a často obsahují množství užitečných dat v textové podobě. Většina webových stránek je však navržena pro koncové uživatele, nikoli pro snadné automatizované použití. V důsledku toho byly vyvinuty specializované nástroje a software, které usnadňují vyškrabávání webových stránek.

Novější formy web scrapingu zahrnují sledování datových kanálů z webových serverů. Jako transportní mechanismus pro ukládání dat mezi klientem a webovým serverem se například běžně používá JSON.

Existují metody, které některé webové stránky používají k zabránění web scrapingu, například detekce a zakázání robotům procházet (prohlížet) jejich stránky. V reakci na to existují systémy web scrapingu, které se spoléhají na použití technik rozboru DOM, počítačového vidění a zpracování přirozeného jazyka k simulaci lidského prohlížení, aby bylo možné shromažďovat obsah webových stránek pro jejich offline rozbor.

Techniky Web scrapingu[editovat | editovat zdroj]

Web Scraping je proces automatického vytěžování dat nebo shromažďování informací z webových stránek. Jedná se o oblast, která se velmi rychle vyvíjí a mění. Má společný cíl s vizí sémantického webu, ambiciózní iniciativou, která stále vyžaduje průlom ve zpracování textu, dík sémantickému porozumění, umělé inteligenci a interakci člověka s počítačem. Současná řešení pro scraping webu sahají od ad-hoc řešení, která vyžadují lidské úsilí, až po plně automatizované systémy, které jsou schopny převést celé webové stránky na strukturované informace, ovšem s určitými omezeními.

Lidské kopírování dat z internetu a jejich ruční ukládání[editovat | editovat zdroj]

Nejjednodušší formou web scrapingu je ruční kopírování a ruční vkládání dat z webové stránky do textového souboru nebo tabulky. Někdy ani sebelepší technologie web scrapingu nedokáže nahradit ruční zkoumání, kopírování a vkládání dat do cílové databáze člověkem. Někdy to může být jediné funkční řešení, pokud webové stránky pro scraping výslovně nastavují překážky, které brání strojové automatizaci.

Párování textových vzorů (Text pattern matching)[editovat | editovat zdroj]

Jednoduchý, ale výkonný přístup k získávání informací z webových stránek může být založen na příkazu grep systému UNIX nebo na možnostech porovnávání regulárních výrazů v programovacích jazycích (například Perl nebo Python).

Programování HTTP[editovat | editovat zdroj]

Statické a dynamické webové stránky lze získat odesláním požadavků HTTP na vzdálený webový server pomocí programování socketů.

HTML parsování[editovat | editovat zdroj]

Mnoho webových stránek obsahuje velké množství stránek generovaných dynamicky z podkladového strukturovaného zdroje, jako je databáze. Data stejné kategorie jsou obvykle zakódována do podobných stránek pomocí společného skriptu nebo šablony. Program, který takové šablony v určitém informačním zdroji detekuje, extrahuje jeho obsah a převádí jej do relační podoby, se v data miningu nazývá wrapper. Algoritmy pro generování wrapperů předpokládají, že vstupní stránky systému pro indukci wrapperů odpovídají společné šabloně a že je lze snadno identifikovat z hlediska společného schématu URL k analýze stránek HTML a k získávání a transformaci obsahu stránek lze navíc použít některé polostrukturované datové dotazovací jazyky, například XQuery a jazyk HTQL[1].

DOM parsování[editovat | editovat zdroj]

Vložením plnohodnotného webového prohlížeče, jako je Internet Explorer nebo ovládací prvek prohlížeče Mozilla Firefox, mohou programy načítat dynamický obsah generovaný skripty na straně klienta. Tyto ovládací prvky prohlížeče také analyzují webové stránky do stromu DOM, na jehož základě mohou programy načítat části stránek. K analýze výsledného stromu DOM lze použít jazyky, jako je XPath.

Vertikální agregace[editovat | editovat zdroj]

Existuje několik společností, které vyvinuly platformy pro vertikální agregaci. Tyto platformy vytvářejí a monitorují množství "botů" pro konkrétní vertikály bez "člověka v záběru" (bez přímé účasti člověka) a bez práce související s konkrétním cílovým webem. Příprava zahrnuje vytvoření znalostní báze pro celou vertikálu a platforma pak automaticky vytváří boty. Robustnost platformy se měří kvalitou získaných informací (obvykle počtem polí) a její škálovatelností (jak rychle dokáže škálovat na stovky nebo tisíce webů). Tato škálovatelnost se většinou využívá k cílení na long tail weby, které běžné agregátory považují za komplikované nebo příliš pracné na získávání obsahu.

Rozpoznávání sémantických anotací[editovat | editovat zdroj]

Scrapované stránky mohou obsahovat metadata nebo sémantické značky a anotace, které lze použít k vyhledání konkrétních útržků dat. Pokud jsou anotace vloženy do stránek, jak to dělá Microformat, lze na tuto techniku pohlížet jako na zvláštní případ DOM parsování. V jiném případě jsou anotace uspořádané do sémantické vrstvy uloženy a spravovány odděleně od webových stránek, takže scrapery mohou před scrapováním stránek načíst datové schéma a instrukce z této vrstvy.

Analýza webových stránek pomocí počítačového vidění[editovat | editovat zdroj]

Existují snahy využívající strojové učení a počítačové vidění, které se pokoušejí identifikovat a extrahovat informace z webových stránek vizuální interpretací stránek tak, jak by to mohl udělat člověk.

Reference[editovat | editovat zdroj]

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

  1. HTQL: the Hyper-text Query Language. htql.net [online]. [cit. 2022-05-22]. Dostupné online.