pondělí 2. července 2012

Jak zjistit počet sdílení (i konkurenčních) webových stránek na Facebooku pomocí Google Refine a Facebook API

Zajímalo by vás jaké jsou nejsdílenější stránky konkurečního webu na Facebooku? Nebo jaké články ze serveru TV NOVA lidé nejvíce mezi sebou na Facebooku sdílí? Zjistit to, je možná jednodušší, než si myslíte. Pomoci vám v tom může další nástroj do Googlu, který se jmenuje Google Refine.

Tento nástroj byl původně vyvíjen společností Freebase, kterou Google před časem koupil, a jeho hlavní úlohou bylo pomáhat čistit nekonzistetní datasety. Ostatně podívejte se určitě na instruktážní video, které Google nabízí na stránkách produktu, až si budete program stahovat. Narozdíl od většiny služeb od Googlu totiž Google Refine běží u vás na počítači, byť se do něj přihlašujete v prohlížeči na adrese http://127.0.0.1:3333/

Po nainstalování, spuštění a načtení stránky Google Refine ve vašem browseru si můžete vybrat jakým způsobem chcete naimportovat data. Program totiž podporuje celou řadu formátů (CSV, XLS, JSON, XML etc.) a to jak ze souborů uložených na disku, tak přímo z webu. V praxi to tak znamená, že do něj můžete například naimportovat libovolný XML dokument z internetu. Tady se už dostáváme k našemu úvodnímu slibu. Značná část webů totiž obsahuje volně přístupnou mapu stránek v XML formátu, pomoci které pomáhají vyhledávačům lépe indexovat celý web. Obvykle má soubor název sitemap.xml a pomocí Googlu se můžete přesvědčit, že jich lze najít všude dost. Já jsem náhodou našel mapu stránek Televizních novin TV Nova na adrese http://tn.nova.cz/sitemap.xml

V menu Google Refine zvolte volbu Create project a v něm položku Web Addresses (URLs). Po zadání URL souboru (pozor včetně http!) se dostanete stránku Configure Parsing Options, zde vyberete myší typ oblasti, která se bude parsrovat, potvrdite ji tlačítkem a uvidíte náhled výsledného importu.



Pokud je vše podle vašich představ, pokračujte a přes tlačítko Create project vpravo nahoře založte nový projekt. Data se stáhnou a vy se objevíte v prostředí podobném klasickému tabulkovému procesoru se sloupci obsahujícími data z importovaného XML.

Nyní máte k dispozici mapu stránek a bude třeba ji doplnit o údaje o počtu sdílení na Facebooku (nebo o řadu dalších, vaší fantazii se meze nekladou). K tomu využijeme volbu z menu pro sloupec s url. Vybreme nejdříve volbu Edit column a v ní Add column by fetching URL's která umožňuje použít data z buňky jako součást volání libovolné URL. V našem případě to bude jednoduché volání API Facebooku, konkrétně jeho služby, která vrací počet shares konkrétní URL. Služba se nachází na adrese http://graph.facebook.com/?id=http://www.klaboseni.cz a je celkem zřejmé, že za parametr ID je třeba doplnit požadované URL. Služba vrací JSON, který mj. obsahuje i položko shares s počtem sdílení stránky na Facebooku.

Po volbě Add column by fetching URL's se objeví jednoduché vyskakovací okonké. Nás v něm nyní budou zajímat jen tři položky. Prvním je New column name kde uvedeme, jak se nový sloupec bude jmenovat např. FB JSON. Druhým je Throttle delay, kde je uvedena doba mezi jednotlivými dotazy v milisekundách. V základním nastavení má 5 sekund a pokud nikam nespěcháte, doporučuji ho nechat nastavené pravě na tuto hodnotu. Některé služby vás totiž při příliš agresivním dotazování mohou dočasně zablokovat.



Nicméně zkuste s ní experimentovat, u Facebook API by mělo nastavení na 1 sekundu (1000 v milisekundách) být v pořádku. Konečne posledním políčkem je textarea se názvem Expression. V ní můžete specifikovat jaká url, a případně s jakými parametry, budou volána a to pomocí programovacího jazyka GREL (či dvou dalších, ale nechme je stranou). V našem případě stačí výraz

"http://graph.facebook.com/?id=" + value

a pak už jen klikněte na OK a můžete začít stahovat data z Facebooku.



Po dokončení operace uvidíte nový sloupec, který obsahuje v každé buňce patřičný JSON.



Teď je ještě třeba extrahovat z JSONu počet shares pro danou stránku. Pomůže nám k tomu opět scriptovací jazyk GREL. Na sloupci opět zvolíme možnost Edit Column, tentokrát ale s volbou Add column based on this column, pomoci které lze vytvořit nový sloupec skrzeva transformaci původního.



Tentokrát využijeme vestavěného parseru JSONu v GRELu a do Expression přidáme následujicí instrukci:

value.parseJson()["shares"]



Zbývá ještě pojmenovat nový sloupec kupříkladu jako FB Shares. Pak jen stačí kliknout opět na OK.

Za chvíli máte k dispozici nový sloupec s přehledem sdílení.



Nyní ho jen seřadíme pomocí funkce Sort a je to.



Vidíme, že v případě TV Nova byly těmi nejsdílenějšími zprávami posledních týdnů právě tyhle:



Asi sami tušíte, že v případě konkurenčních stránek mohou být výsledky zajímavější a že se nemusíte jenom omezit na volání API pro Facebook Shares, ale o tom zase někdy jindy.

Žádné komentáře: