Wikidata:WikiProject Czech Republic/Projects/Návod na Webscraper.io

Webový scraper webscraper.io umožňuje pohodlné stažení většiny webových databází bez nutnosti ovládat jakýkoliv programovací jazyk. K použití této aplikace potřebujete jen prohlížeč Google Chrome, libovolný Google účet a nainstalované rozšíření Web Scraper. web scraping (Q665452) je označení pro automatizované získávání dat z webových stránek; některé webové stránky ho ovšem zakazují (ale i v případě, že nezakazují, tak to neznamená, že s daty můžete vždy volně nakládat – rozhodující je licence dat a v úvahu byste měli vzít i database right (Q688416)).

Instalace a spuštěníEdit

 
Okno s hlavním ovládacím panelem nástroje webscraper.io

Otevřete si stránku https://www.webscraper.io v prohlížeči Google Chrome a nainstalujte si rozšíření web scraper (tlačítko Install). Následně si v Google Chrome otevřete panel Nástroje pro vývojáře (DevTools), třeba pomocí klávesové zkratky Ctrl + Shift + I. Pokud se panel otevře v pravé části okna, je vhodné si ho přesunout do spodní části okna, kde se vám s ním bude lépe pracovat. V Nástrojích pro vývojáře zvolte lištu Web Scraper, čímž se octnete v hlavním panelu tohoto nástroje, kde najdete jednotlivá tlačítka umožňující ovládání scraperu.

OrientaceEdit

 
Okno pro přidávání nového selektoru

Nástroj umožňuje snadno uložit sadu či schéma pokynů, které umožní v prohlížeči postupně automaticky projít celou databázi a uložit požadované části webové stránky. Nová sada pokynů (sitemap) se vytváří pomocí tlačítka Create new sitemap. V úvodním menu po kliknutí na toto tlačítko je nutné zadat pracovní název sitemapy (Sitemap name) a výchozí stránku, na níž bude celý proces začínat (Start URL, tzv. root). Následně se přesunete do rozhraní, které umožňuje definovat schéma celého stahování (nastavit sitemapu). Sitemapa se skládá z jednoho či mnoha tzv. selektorů (selectors), které mohou být různého typu. Přidávají se tlačítkem Add new selector. Nejčastější jsou selektory typu Link (scraper klikne na odkaz a přesune se na stránku, kam vede) a Text (scraper stáhne text v dané části webové stránky). Místa na webové stránce, jichž se selektory týkají, se specifikují pomocí tlačítka Select. Toto kouzelné tlačítko vám umožní vybrat objekty (elementy) na webové stránce pouhým poklikem (vybrané elementy po pokliknutí změní barvu ze zelené na červenou) a následným potvrzením pomocí Done selecting. Bude vybrán první výskyt daného elementu na stránce; pokud chcete načíst všechny výskyty, je nutné zaškrnout možnost Multiple. S zaškrtnutým tlačítkem je možno vybrat postupnými pokliky několik elementů stejného typu na dané stránce a nástroj se na základě těchto vybraných elementů pokusí najít všechny výskyty na stránce.

Selektory je možné uspořádávat do stromové struktury, aby následně scraper hierarchicky procházel jednotlivé záznamy. Libovolný selektor je možno podřadit jakémukoliv selektoru typu Link, a to v části Parent selectors. Až budete se schématem spokojení, proces spustíte tlačítkem Scrape. V průběhu scrapingu je možné zobrazit dosavadní výsledky pomocí tlačítka Browse, po dokončení procesu je možné stáhnout data tlačítkem Export data as CSV.

Příklady schémat (sitemap)Edit

Jednoduchá databáze bez stránkováníEdit

Jednoduchá databáze, jako například Q65621660 (zde), nedá mnoho práce. Schéma, které nám umožní stáhnout názvy a souřadnice objektů, bude vypadat takto:

root --> odkaz na jednotlivé záznamy (link – multiple) --> název (text)
                                                       |
                                                       --> souřadnice (text)

V závorce jsou uvedeny typy selektorů, které budou pro tuto databázi použity.

Pokud vám to nejde, můžete zkusit importovat vzorovou sitemapu příkazem Create new sitemap -> Import sitemap a vložením následující sady pokynů do pole Sitemap JSON: {"_id":"litomysl","startUrl":["https://lam.litomysl.cz/objekt"],"selectors":[{"id":"odkaznazaznam","type":"SelectorLink","parentSelectors":["_root"],"selector":".hoverable a","multiple":true,"delay":0},{"id":"nazev","type":"SelectorText","parentSelectors":["odkaznazaznam"],"selector":"h1","multiple":false,"regex":"","delay":0},{"id":"souradnice","type":"SelectorText","parentSelectors":["odkaznazaznam"],"selector":"div.block:nth-of-type(4)","multiple":false,"regex":"","delay":0}]}

Databáze se stránkovánímEdit

Některé databáze zobrazují záznamy po určitém počtu a rozdělují je na stránky, jejichž dané číslo se objeví v URL. Existuje několik řešení tohoto problému. Příkladem je Q62563665, dostupná z http://vodnimlyny.cz/mlyny/objekty, přičemž například URL stránky číslo 4 vypadá takto: http://vodnimlyny.cz/mlyny/objekty/?paginator-page=4. My použijeme téměř totožné schéma, jako v minulém příkladu, s drobným rozdílem: adresu sitemapy je v úvodním formuláři nutno zadat takto: http://vodnimlyny.cz/mlyny/objekty/?paginator-page=[1-263]. Nástroj tak dostane informaci, že má postupně procházet stránky od 1 do 263. Ze záznamů si třeba stáhneme rejstříkové číslo památky (pokud je vyplněno) a sitemapa bude vypadat takto:

root --> odkaz na jednotlivé záznamy (link – multiple) --> rejstříkové číslo (text)

Pokud vám to nejde, můžete zkusit importovat vzorovou sitemapu příkazem Create new sitemap -> Import sitemap a vložením následující sady pokynů do pole Sitemap JSON: {"_id":"vodnimlyny","startUrl":["http://vodnimlyny.cz/mlyny/objekty/?paginator-page=[1-263]"],"selectors":[{"id":"odkaznazaznam","type":"SelectorLink","parentSelectors":["_root"],"selector":".td-name a","multiple":true,"delay":0},{"id":"rejstrik","type":"SelectorText","parentSelectors":["odkaznazaznam"],"selector":"div:nth-of-type(14) div.form-input","multiple":false,"regex":"","delay":0}]}

Databáze s tlačítkem "načíst další"Edit

Některé databáze, například videa pořadu GebrianVS na Streamu (Gebrian versus (Q65969619)), obsahují na konci stránky tlačítko "Načíst další videa", která dynamicky zobrazí nabídku dalších videí. Tlačítko se posune níže a jeho opakované stisknutí vyvolá zobrazení dalších a dalších videí. V tomto případě se ovšem stisknutí tlačítka vůbec neprojeví na URL, které zůstává stále neměnné – https://www.televizeseznam.cz/porad/gebrianvs. V těchto případech je možné použít speciální typ selektoru – Element click. V poli Selector tentokrát musíme vybrat celou část stránky, která načítá seznam videí (téměř celé tělo stránky). V poli Click Selector následně vybereme červené tlačítko, které umožňuje načítání dalších videí. V jednotlivých videozáznamech si necháme uložit jejich titul a datum vydání. Schéma bude tedy vypadat takto:

root --> rozbalení všech videí (element click – multiple) --> odkaz na jednotlivé záznamy (link – multiple) --> titul (text)
                                                                                                           |
                                                                                                            --> datum vydání (text)

Pokud vám to nejde, můžete zkusit importovat vzorovou sitemapu příkazem Create new sitemap -> Import sitemap a vložením následující sady pokynů do pole Sitemap JSON: {"_id":"gebrian","startUrl":["https://www.televizeseznam.cz/porad/gebrianvs"],"selectors":[{"id":"dalsividea","type":"SelectorElementClick","parentSelectors":["_root"],"selector":"div.m--season-episodes","multiple":true,"delay":"1000","clickElementSelector":".m--red-button span","clickType":"clickMore","discardInitialElements":"do-not-discard","clickElementUniquenessType":"uniqueText"},{"id":"odkaznavideo","type":"SelectorLink","parentSelectors":["dalsividea"],"selector":".__episodes-container > div.__episode-container a","multiple":true,"delay":0},{"id":"datum","type":"SelectorText","parentSelectors":["odkaznavideo"],"selector":"div.__publish","multiple":false,"regex":"","delay":0},{"id":"titul","type":"SelectorText","parentSelectors":["odkaznavideo"],"selector":"h2","multiple":false,"regex":"","delay":0}]}