Abstract Morávek, P. Web structure visualization. Diploma thesis. Brno, 2012 This diploma thesis deals with analysis of existing applications in field of web structure visualization. It tries to design and implement new solution for web environment on the basis of gained knowledge. This solution should be universally usable and expandable to meet the needs of specific analytical tasks.
Abstrakt Morávek, P. Vizualizace struktury webu. Diplomová práce. Brno, 2012 Tato diplomová práce se zabývá analýzou existujících aplikací pro vizualizaci struktury webu. Na základě poznatků získaných analýzou se pak snaží navhrnout a realizovat nové řešení pro webové prostředí, které bude klást na důraz univerzální použitelnost a rozšiřitelnost dle aktuálních potřeb analytických úloh.
Seznam obrázků Obr. 1: Výřez z mapy stránek webu Senátu Parlamentu České republiky. http://www.senat.cz/mapa_stranek.php 10 Obr. 2: Graficky atraktivně ztvárněná mapa stránek internetové agentury. http://www.symbio.cz/mapa-stranek.html 11 Obr. 3: Utilita Validation Graph zobrazuje strom webu s barevně zvýrazněným typu souboru a validity zdrojového kódu. 12 Obr. 4: Webtracer2. Vizualizér využívá rozhraní OpenGL k vykreslení trojrozměrné mapy webových stránek. 13 Obr. 5: glTrail. Aplikace animovaně vizualizuje přechod návštěvníků mezi jednotlivými stránkami v reálném čase. 14 Obr. 6: glTail. Animovaná vizualizace nových událostí v reálném čase vyčtených v logu. 15 Obr. 7: Anemone. Vizualizace struktury webu a toku návštěvnosti s využitím organického informačního designu. 16 Obr. 8: Logstalgia. Animovaná vizalizace událostí webového serveru evokující počítačovou hru. 17 Obr. 9: Vizualizace toku návštěvnosti v Google Analytics ilustrující přechod mezi stránkami podle zadané vstupní veličiny. 18 Obr. 10: Schéma systému.
20
Obr. 11: ER diagram.
22
Obr. 12: Prostředí aplikace.
43
Obr. 13: Třídy javascriptového frontendu.
44
Obr. 14: Příklad vizualizace.
46
Obr. 15: Zobrazení provázaných dat – Validita stránky.
46
1
1
ÚVOD
8
Úvod
V oblastech správy webových stránek, analýzy chování jejich návštěvníků, internetového marketingu a v dalších příbuzných oborech může hrát velkou roli i vhodná prezentace dostupných relevantních dat. Pro člověka přirozenou a přívětivou formou je bez pochyby využití grafického zobrazení. Vhodná vizualizace pomáhá postihnout a zvýraznit významné jevy a případně zpřístupňuje vstřebání informací i lidem bez znalosti daného oboru. Jednou ze základních popsatelných charakteristik webových stránek je jejich členění, či struktura. Vhodné grafické zobrazení může být člověku nápomocné nejen ve snadné orientaci v dané struktuře, ale umožní i připojení dalších významných informací. Z čistě fyzického hlediska lze soubor webových stránek (nejčastěji označovaný anglickým slovem website) často popsat jako stromovou strukturu, neboť bývá obvykle tvořena běžnými počítačovými soubory. V rámci dokumentů je pak často možné vysledovat vzájemnou podřízenost jednotlivých sekcí opisující právě tuto stromovou strukturu danou soubory a jejich umístěním v jednotlivých adresářích. Mnoho webů disponuje tzv. mapou stránek, která právě stromové zobrazení využívá. Vzhledem k tomu, že web je ale postaven na technologii hypertextu, není takováto reprezentace ve většině případů dostačující, protože propojení stránek je v praxi mnohem komplikovanější a strom o tom nepodává úplnou informaci.
2
2
CíL PRÁCE
9
Cíl práce
Cílem práce je vytvořit nástroj pro usnadnění analytických úloh nad webovými stránkami. Základní vlastností aplikace bude automatizované procházení webu a následná vizuální reprezentace jeho struktury ve vhodné podobě minimalizující ztrátu podstatných informací. Nástroj bude navržen s důrazem na možnost provázání nalezených strukturálních informací s různými typy relevantních dat, jakými jsou například tok návštěvnosti, datová náročnost, klíčová slova apod. Před vlastní implementací je třeba vyhledat existující aplikace pro analýzu struktury webu. Dále je nutné zjistit používané a standardizované formáty, jejichž implementací by bylo možné s těmito nástroji zajistit interoperabilitu. V rámci samotné implementace pak bude na místě zvážit použití některých dostupných řešení zabývajících se řešením dílčích problémů vztahujících se k automatizovanému procházení webových stránek, zpracování jejich obsahu i následné vizuální reprezentaci. Nástroj vizualizující výsledná data bude mít podobu webové aplikace. Pro ukládání dat bude využívat některý z volně dostupných relačních databázových systémů. Aplikace bude umožňovat export do standardizovaných formátů pro výměnu informací převážně na bázi XML (např. Sitemaps). Prezentační vrstva bude využívat některý z dostupných systémů pro vizualizaci dat na webu (např. SVG, Adobe Flash).
3
3
SOUČASNÝ STAV
10
Současný stav
Tato kapitola poskytuje výčet existujících řešení zabývajících se vizualizací webové struktury. V současnosti lze dohledat množství převážně drobných utilit. Mnohdy ale ambice těchto nástrojů nepřesahují záměr prezentovat uživateli grafický výstup pouze jako jakousi zajímavost bez hlubší užitné hodnoty. Ještě před uvedením výčtu je ale vhodné zmínit pravděpodobně nejčastěji užívanou formu popisu struktury webu, která byla nastíněna již v úvodu této práce. Jedná se o mapu stránek, která má uživatelům usnadnit nalezení požadovaných informací. Bývá členěna do stromové struktury a obvykle s sebou nenese žádné další provázané informace. Slouží čistě k zobrazení umístění jednotlivých dokumentů.
Obr. 1: Výřez z mapy stránek webu Senátu Parlamentu České republiky. http://www. senat.cz/mapa_stranek.php
Jedná se o utilitu [1] napsanou v programovacím jazyce Java, která prochází strukturu webových stránek a zdrojový kód jednotlivých stránek podrobuje testu na validitu. Stránky znázorňuje pomocí vzájemně propojených koleček, přičemž barva jejich výplně slouží k rozlišení typu souboru (HTML, PHP, ASP, ZIP apod.) a barva ohraničení potom určuje validitu dané stránky. Aplikace slouží zjevně pouze k demonstrativním účelům, obsahuje jen malé množství volitelných parametrů, zato je ale dostupná i se zdrojovými kódy. Výstupem rovněž není multigraf, ale stromová struktura. Aplikace zanedbává vícenásobné vazby mezi stránkami.
Obr. 3: Utilita Validation Graph zobrazuje strom webu s barevně zvýrazněným typu souboru a validity zdrojového kódu.
3.2
3.2
Webtracer2
13
Webtracer2
Aplikace [2] sestává ze dvou samostatných celků: webového pavouka procházejícího zadaný web a z vizualizéru prezentujícího získaná data. Pavouk nepřijímá žádné parametry kromě vstupní adresy URL. Počet procházených stránek je rovněž pevně limitován na hodnotu 1000. Po dosažení tohoto počtu pavouk ukončí svoji činnost. Strukturální informace o jednotlivých webech ukládá do vlastního datového souboru. Vizualizér je poté schopný tato data zobrazit v trojrozměrné podobě. Pro tyto účely využívá rozhraní OpenGL.
Obr. 4: Webtracer2. Vizualizér využívá rozhraní OpenGL k vykreslení trojrozměrné mapy webových stránek.
3.3
3.3
glTrail a glTail
14
glTrail a glTail
Jde o dvojici aplikací vizualizující data vyčtená ze souborů záznamů činnosti aplikací (logů) v reálném čase s využitím technologie OpenGL. Aplikace zaznamenávají informace o jednotlivých událostech obvykle formou jednotně formátovaného záznamu. glTrail a glTail je podle definovaných pravidel zpracovávají. Zatímco glTail [3] se zaměřuje na logy obecných aplikací a vizualizuje jednotlivé zaznamenané diskrétní děje, glTrail [4] se zaměřuje na logy webových serverů obsahující informace o přístupech návštěvníků k jednotlivým souborům a často rovněž informaci o odkazující stránce (tzv. referer). Díky tomu lze částečně rekonstruovat přibližnou strukturu webu a prezentovat ji ve vizuální podobě. Aplikace tak může zobrazovat animovanou vizualizaci toků návštěvníků mezi jednolivými stránkami v reálném čase.
Obr. 5: glTrail. Aplikace animovaně vizualizuje přechod návštěvníků mezi jednotlivými stránkami v reálném čase.
3.3
glTrail a glTail
15
Obr. 6: glTail. Animovaná vizualizace nových událostí v reálném čase vyčtených v logu.
3.4
3.4
Anemone
16
Anemone
Jedná se o demonstrační aplikaci ukazující využití organického informačního designu, kterou vytvořil Benjamin Fry, jeden ze spoluautorů programovacího jazyku Processing zaměřeného právě na vizualizaci dat, a blíže o ní pojednává ve své diplomové práci Organic Information Design [5] a v knize Visualizing Data [6]. Aplikace analyzuje logy webového serveru Apache a na základě nich generuje graf znázorňující strukturu webu, přičemž velikost uzlu (stránky) je závislá na návštěvnosti odpovídající stránky. Proměnlivá tloušťka hrany pak znázorňuje množství návštěvníků, které mezi jednotlivými stránkami přecházelo.
Obr. 7: Anemone. Vizualizace struktury webu a toku návštěvnosti s využitím organického informačního designu.
3.5
3.5
Logstalgia
17
Logstalgia
Logstalgia [7], podobně jako glTail, vizualizuje přístupy na webový server zpracováváním logových souborů. Zameřuje se přitom konkrétně na webový server Apache. Přestože vlastně strukturu webu zanedbává, je vhodné ji v tomto výčtu rovněž zmínit, protože ukazuje další zajímavý přístup k vizualizaci jevů. Aplikace logy zpracovává zpětně, nezaměřuje se tedy na vizualizaci v reálném čase. K vykreslování rovněž používá technologii OpenGL. Na levé straně obrazovky se v závislosti na aktuálně zvoleném časovém měřítku objevují síťové adresy klientů požadujících po webserveru jednotlivé soubory. Směrem od těchto adres je vyslána kulička směrem k pravé straně obrazovky, kde je odražena „pálkouÿ. V tomto okamžiku se v blízkosti odrazu objevuje HTTP kód značící výsledek požadavku (200 OK, 404 NOT FOUND, apod.) a úplně vpravo se zobrazuje název žádaného souboru. Vizualizace se vlastně snaží evokovat klasickou počítačovou hru obvykle nazývanou Paddle War, to umocňuje i inkrementující se „skoreÿ s každým obslouženým požadavkem. Přestože aplikace na první pohled působí jako hříčka, ve skutečnosti může poskytnout kvalitní přehled o událostech na webovém serveru. Navíc lze její chování velmi jemně doladit celou řadou parametrů ovlivňujících jak vizuální stránku, tak rozsah zobrazovaných dat, časové měřítko apod.
Google Analytics je oblíbeným nástrojem pro sledování a analýzu návštěvnosti webových stránek. Webovým administrátorům dává k dispozici kód v jazyce JavaScript, který po vložení na webovou stránku analyzuje a odesílá informace o chování návštěvníků. Služba disponuje celou řadou funkcí, z nichž jednou je i vizualizace toku návštěvníků. Tok návštěvníků je zobrazen ve formě dvojrozměrného grafu, kde na počátku vodorovné osy lze nastavit sledovanou vstupní veličinu (klíčová slova, lokalita návštěvníka, verze operačního systému apod.) a dále na této ose lze sledovat přesun návštěvníků mezi stránkami po jednotlivých iteracích. Tímto nástrojem se do hloubky zabývá například série článků dostupná na [8].
Obr. 9: Vizualizace toku návštěvnosti v Google Analytics ilustrující přechod mezi stránkami podle zadané vstupní veličiny.
3.7
Shrnutí
Z výčtu existujících řešení lze vyčíst několik skutečností. Jedná se převážně o klasické desktopové aplikace, jejich výstup je jednoúčelový a obvykle dále nezpracovatelný. Uvedená řešení mnohdy navíc neoddělují proces získávání dat a jejich vizualizace do samostatných celků. Vyjímku tvoří jen Google Analytics, který je jako jediný už ze své podstaty seriózním nástrojem na analýzu dat o návštěvnosti webových stránek. Vizualizaci toku přitom používá jako jeden z pohledů na dostupná data. Nebere ale přitom v úvahu celou strukturu webu, nýbrž vždy jen určitou podmnožinu uzlů. Nástroje glTrail a glTail se zase mohou dobře uplatnit v oblasti monitoringu provozu webových serverů v reálném čase a mohou poskytnout dobrý přehled o některých právě probíhajících jevech, neumožňují ale návázání a zobrazení žádných dalších relevantních dat.
4
NÁVRH ŘEŠENí
4
19
Návrh řešení
Nově vzniklé řešení by mělo splňovat požadavky, které pokrývají nedostatky aplikací zmíněných v kapitole Současný stav. Požadavky shrnuje následující sekce.
4.1
Požadavky na aplikaci
Aplikace bude splňovat následující požadavky: • Oddělený pavouk (spider) získávající strukturální informace o zadaném webu v podobě snímků tak, aby bylo možné o jednotlivých webech informace ukládat opakovaně v libovolných časových odstupech či s odlišnými parametry. Data generovaná pavoukem musí být dále zpracovatelná jinými aplikacemi, tou základní je samozřejmě vizualizér. • Možnost provázat strukturální informace s jinými daty. Toho bude docíleno pomocí malých nástrojů, které jsou schopny zpracovat data z relevantních zdrojů a navázat je buď na jednotlivé stránky (uzly grafu), nebo na odkazy na stránkách umístěné (hrany). • Vizualizér běžící ve webovém prostředí. • Možnost exportu dat do dále zpracovatelného obecného formátu (XML, JSON).
4.2
Schéma celého systému
4.2
20
Schéma celého systému
Rozdělení komponent celého systému ilustruje následující diagram:
Obr. 10: Schéma systému.
4.3
Přístupová práva uživatelů
Aplikace nebude řešit provoz ve víceuživatelském prostředí. Nicméně jejich souběžná práce je teoreticky možná. Díky systému snímků nebude docházet ke kolizím například při spuštění více procházecích pavouků současně. Případnou autorizaci uživatelů je možné řešit externě.
4.4
Způsob uchovávání dat
Před samotnou implentací jednotlivých komponent je třeba zvolit formát pro uchovávání dat a jeho úložiště. V současnosti patrně neexistuje žádný doporučený a obecně používáný datový formát pro uchování struktury webových stránek. 4.4.1
Sitemaps
Pro účely instruování indexovacích robotů internetových vyhledávačů byl zaveden protokol Sitemap založený na XML. Ten dává robotům k dispozici vodítka ke zvolení vhodného způsobu indexace poskytnutím informací o o periodicitě aktualizací
4.4
Způsob uchovávání dat
21
obsahu, informace o času poslední změny apod. Existuje řada online i desktopových nástrojů pro generování Sitemap. Níže je uveden příklad základní podoby sitemapy převzatý ze specifikace protokolu [9]: 1 2 3 4 5 6 7 8 9
Specifikace protokolu ale nijak nehovoří o vazbách mezi jednotlivými stránkami, ty ostatně roboti pro potřeby vlastní indexace dohledávají sami. Z toho vyplývá, že Sitemap není pro uchovávání strukturálních dat o webu vhodný. Implementovaná aplikace bude schopna soubory Sitemap pouze generovat v rámci exportu dat. 4.4.2
Vlastní řešení
Při implementaci bude tedy přistoupeno k vlastnímu řešení využívajícímu databáze. Před volbou řešení pavouka i vizualizéru je třeba upřesnit, jaké informace je nezbytné uchovávat. Jak již bylo zmíněno výše, pouhý plochý seznam url je pro účely vizualizace nedostatečný. V rámci popisu struktury lze identifikovat dva významné objekty: stránky (tabulka pages) a odkazy na těchto stránkách (tabulka links). Odkazy propojují jednotlivé stránky mezi sebou. Soubor souvisejících stránek a odkazů náležící jednomu webu (a tedy popisující jeho strukturu) bude nazýván mapou (tabulka maps). Mapu pro stejný web lze vytvořit opakovaně buď proto, aby reflektovala změny v čase, anebo proto, že její vytvoření bude ovlivněno odlišnými parametry procházení, tyto opakovaně prováděné záznamy budou nazývány snímky (snapshoty). K jednotlivým objektům (ať už ke stránkám, nebo k odkazům) bude možné navázat další data. Tato data budou sbírat od pavouka oddělené nástroje schopné pracovat s již vytvořeným popisem struktury uloženým v databázi. Tyto nástroje budou k těmto účelům využívat tabulek tied-data a data. První jmenovaná tabulka popisuje vlastnosti svázaných dat (textový popis, zda se data vážou ke stránkám či k odkazům, popis způsobu vizualizace). Druhá tabulka potom obsahuje vlastní data přidružená ke konkrétnímu záznamu v tabulce stránek či odkazů.
4.4
Způsob uchovávání dat
4.4.3
Struktura databáze
Celá navrhovaná struktura databáze je popsána ER diagramem na obrázku 11.
Obr. 11: ER diagram.
22
4.4
Způsob uchovávání dat
4.4.4
23
Význam sloupců tabulek
Všechny tabulky jsou uvozeny sloupcem id, což je interně používaný, automaticky se inkrementující, identifikátor, který je zároveň primárním klíčem. Tabulka maps text-id
Textový identifikátor (obvykle název webu). Pod tímto identifikátorem se budou sdružovat jednotlivé snímky.
base-url
Výchozí URL, na kterém začalo prohledávání.
timestamp
Čas uložení snímku.
parameters
Parametry procházení. Mohou být variabilní. Uloženy serializovaně ve formátu JSON.
Tabulka pages map
Mapa, do které stránka náleží (cizí klíč).
hash
MD5 Hash1 URL stránky. Hashe jsou interně užívány u jednotlivých stránek či odkazů pro jejich snadnou a jednoznačnou identifikaci.
url
Absolutní URL stránky.
mime
MIME2 typ stránky.
Tabulka links page
Stránka, do které odkaz náleží (cizí klíč).
hash
MD5 Hash absolutního URL cíle odkazu stránky.
element-type
CSS3 selektor definující typ elementu.
title
Titulek nebo text odkazu.
target
Absolutní URL cílové stránky.
original-target
Původní podoba URL cílové stránky. Může se jednat například o relativní adresu, či o adresu nezbavenou parametrů a kotev.
Tabulka tied-data text-id 1
Textový identifikátor typu dat.
Hash je tzv. otisk dat. Tj. data transformovaná pomocí matematické funkce na relativně malé číslo. 2 Multipurpose Internet Mail Extensions
4.5
24
Pavouk
type
Typ objektu, na který se data vážou (stránka nebo odkaz).
title
Pro člověka přívětivý název svázaných dat.
description
Textový popis svázaných dat.
parameters
Detailní parametry svázaných dat. Data ve formátu JSON. Obsahují popisná data nezbytná pro další zpracování vizualizérem. Budou popsána níže v textu v rámci popisu implementace.