Zdroje dat
- URL adresa
- Nahrání souboru: TSV, CSV, *SV, Excel (.xls and .xlsx), JSON, XML, RDF as XML, Google Data
- Import projektu Open Refine
- Vložením formou CTRL + V.
Problém není ani import několika souborů / URL současně. S
Open Refine lze na jednom místě snadno analyzovat vaše každodenní reporty v Excelu za celý rok. A to už se vyplatí.
Jako vstupní zdroj dat používám nejčastěji soubor. V případě analýzy webu sitemap.xml, který si buď vezmu přímo z analyzovaných webových stránek. Pokud není, tak si nechám vygenerovat přes
Xenu, nebo
SiteMap generator
Další formou získávání vstupních dat je scraping pomocí pluginu prohlížeče
Scraper: plugin pro Chrome a ručně nascrapovat výsledky vyhledávání na Google (
site:seowebmaster.cz). Tak získám seznam zaindexovaných URL u webů, ikdyž nemám přístup do Google Search Console. Scraper je také užitečný pomocník pro získávání obsahu ze stránek generovaných AJAXem (Facebook, Zbozi.cz, etc.).
Nahrání tabulky z databáze
Dump databáze a export do Open Refine provádím, pokud databázi chci vyčistit, zmigrovat na jiný web, nebo získat určitá data uložená v databázi webu.
Ke stažení tabulky z SQL databáze lze použít různé nástroje pro správu databází. Praktickým nástrojem je
Adminer, který stačí nahrát na webhosting webu. Po zpracování dat v Open Refine exportuju do .csv souboru a můžu opět nahrát do příslušné tabulky databáze. Bacha na závislosti a strukturu! A zálohovat, zálohovat, zálohovat :).
Analýza webu: H1, title, descriptions
Uvažujme případ, že bych chtěl mít přehled o nadpisech, title a descriptions na webu SEOwebmaster.cz. Jako první skočím po
sitemap.xml. V Refine dám založit nový projekt načtením výše uvedeného sitemap.xml z URL. Následně vymezím oblast importu dat z XML na tag <loc>. První sloupec s názvem loc je seznamem všech URL obsažených v mapě webu pro vyhledávače.
Od sloupce loc vytvořím nový sloupec: Edit Columm > Add column by fetching URLs... Sloupce nazvu HTML, protože to bude zdrojový kód dané URL. Pak nastává čekání, než se data stáhnou. Když už mám vytvořený a hlavně plný sloupec HTML, tak můžu vytvořit další sloupec formou: Add column based on this columns. Název sloupce budiž H1. Zadám GREL výraz
value.parseHtml().select("h1")[0].htmlText()
. Právě vznikl sloupec s nadpisy H1 na webu SEOwebmaster.cz. Z HTML budu nadále čerpat další data. Obdobně vytvořím sloupec title, descriptions, vyberu si zajímavý odstavec (např. anotace). Tím jsem získal základní data pro obsahovou analýzu a cenné podklady pro analýzu klíčových slov.
Záznam a řádek
Open Refine umí zpracovávat data po řádcích (rows) a záznamech (records). Jeden záznam může mít n-řádků. Každý řádek jde filtrovat a upravovat jednotlivě v režimu řádky. Pokud je řádek součástí záznamu, tak se v režimu záznam zobrazí při stejném nastavení filtrů i ostatní řádky, které jsou v daném záznamu.
Příkladem využití záznamu je produkt, který má více variant a tak je rozepsán na více řádků. Například produkt LIEBHERR CP 4023 muže mít stejný kód, ale index -20, nebo -21. Jednotlivé indexy hrají roli v označení energetických štítků, jelikož se téměř každým indexem zvyšuje úspornost. Data v řádcích jsou tedy částečně rozdílná, ale mají společný jmenovatel: je to stále stejný produkt. Sloupec produkt bude pro mě klíčem k záznamu, přesunu ho na 1 místo a v menu sloupce zvolím Sort a nechám sloupec seřadit dle abecedy. Následně se mi vedle počítadla počtu stránek zobrazí fltr "Sort". Zvolím možnost "Reorder rows pernamently". Teď by všechny produkty s názvem LIEBHERR CP 4023 měly být u sebe. Nyní vytvořím záznam. V menu sloupce zvolím Edit cells > Blank down. Nyní mi vznikl záznam. Můžu přepnout na práci se záznamy a vidět všechna data různých indexů LIEBHERR CP 4023 v jednom filtru.
Stejný způsob, jako při vytváření záznamu, lze využít pro odstranění duplicit. Pouze nepřepnu na záznam, ale zůstanu v režimu řádky. Pak nastavím na sloupec produkt filtr: Facet > Customized facets > Facet by blank. Vyfiltruju prázdné řádky a ty odstraním.
Záznam se hodí, ikdyž chci
přidat nové řádky. Do posledního řádku ruční editací přidám několik čárek, např. 5.: , , , , ,. U sloupce zvolím možnost Edit cells >> Split multi-valued cells. Za rozlišující znak pro rozdělení řádku označím výše uvedenou čárku. Zapsal jsem 5 čárek, mám tedy 5 nových řádků.
Podobně postupuju, když chci data dostat do jednoho řádku, ale v tomto případě začínám u záznamu a postupuju Edit cells >>Join multi-valued cells. Data mám teď v jednom řádku, tak si je snadno můžu přeimportovat do jiné tabulky.
Podrobný náávod najdete najdete na Wiki OpenRefine.
Taháky pro GREL v Open Refine
GREL | Popis |
value.parseHtml().select("meta[name=description]")[0].htmlAttr("content") | Zobrazí meta descriptions URL |
value.parseHtml().select("h1")[0].htmlText() | Zobrazí nadpis H1 |
value.parseHtml().select("div.Vyber")[0].htmlText() | Vybere obsah div s třídou Vyber ( class="Vyber") |
value.split("Barva:")[1] | Zobrazí řetězec za slovem "Barva:" |
value.split("/")[5] | Zobrazí řetězec za 5tým lomítkem |
value.parseHtml().select("img")[0].htmlAttr("src") | Zobrazí zdrojovou URL 1. obrázku |
cells["SloupecZeKterehoChciZkopirovatData"].value | Vloží data ze sloupce SloupecZeKterehoChciZkopirovatData |
cell.cross("ZdrojovaTabulka","Klic").cells["NovySloupec"].value[1] | Nový sloupec od sloupce Klic, který přidá sloupec NovySloupec z tabulky ZdrojovaTabulka, která obsahuje taktéž sloupec Klic |
value.replace('CoChciNahradit','CimToChciNahradit ') | Nahradí text CoChciNahradit za text CimToChciNahradit |
facetCount(value, "value", "Srovnej") | Počet shod hodnot se sloupcem Srovnej. |
value.splitByLengths(2)[0] | Zkrátní řetězec na první dva znaky |
value.replace(cells['Duplicita'].value,'').trim() | Odstraní řetězec obsažený ve sloupci Duplicita |
replace(value,/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/,'') | Odstraní všechny HTML tagy (javascript a CSS zůstane) |
value.escape('javascript') | Zobrazí mezery z JavaScriptu (využítí např. při čištění sloupce s klíčem) |
value.replace("Kč","").replace(",",".")
.escape('javascript').replace("\\u00A","").toNumber() | Změním sloupec Tržby s hodnotami v Kč (např. export z Google Analytics) do číselné hodnoty |
value.replace("\n","") | Odstraní zalomení řádků. |
toString(toDate(value),"dd/MM/yyyy") | Zobrazí datum ve formátu Den/Měsíc/Rok |
round(value) | Zaokrouhlí na celá čísla. |
cells["Cena s DPH"].value - (cells["Cena s DPH"].value * 0.21)
value-(value * 0.21) | Načte data ze sloupce Cena s DPH a odečte daň 21% To stejné, ale v rámci stejného sloupce. |
partition(value, "Vyznamný text")[0] | Rozdělí hodnotu dle výskytu slova Významný text a vybere první řetězec před prvním objevením této fráze [0], další blok je [1], atd... |
row.index | Přidá číslo řádku jako hodnotu. |
Více informací najdete na
Wiki projektu Open Refine.