Scrapování dat z webu pro produktovou kampaň pomocí Import.io

Součástí PPC kampaní pro e-shop by vždycky měly být produktové kampaně ve vyhledávací síti. Nejčastěji je vytvoříte z XML feedu (CSV souboru), který dostanete od provozovatele. Občas se ale může stát, že e-shop není schopen z nějakého důvodu XML feed zajistit – mají nevhodné krabicové řešení, vytvoření XML feedu je zpoplatněno nějakou nesmyslně vysokou částkou, kterou si e-shop nemůže dovolit atd. Důvodů může být víc. Pak vám nezbývá než si potřebná data opatřit jiným způsobem. Pokud je produktů několik stovek až tisíc, jistě oceníte, že to lze udělat strojově.

Použití extractoru nebo crawlera z Import.io není samozřejmě jedinou možností. Můžete požádat (spíš zaplatit) programátora, který napíše script třeba v PHP, nebo v čemkoli, co je mu blízké, můžete použít Excel, nebo třeba Open Refine. Pokud to ale jako já nezvládnete, můžete využít příjemně a jednoduše ovladatelnou free aplikaci Import.io.

Úkol: z dané kategorie vyscrapovat URL adresy, názvy produktů, ceny, skladovou dostupnost, dopravu zdarma a podkategorii.

Jako příklad jsem vybral kategorii mikrovlnné trouby v e-shopu OnlineShop.cz:

http://www.onlineshop.cz/male-elektrospotrebice/kuchynske-spotrebice/mikrovlnne-trouby/

Chci ale jen podkategorie „Mikrovlnné“, „Mikrovlnné+gril“ a „Mikrovlnné+gril+horký vzduch“. Nechci příslušenství.

Magic

Máte několik možností. Jako první je extrahovat data přímo ve webové aplikaci Import.io. Tento nástroj, kterému říkají „Magic“, nelze nijak nastavit, jaká data scrapovat se naučil z dřívějších pokusů (nejspíš). Dost často vám data, která nabízí, budou stačit. Výsledek dostanete během několika vteřin, stáhnete do CSV souboru, a dál to už znáte.

Magic

Postup je jednoduchý. Vložíte URL adresu s produktovou kategorií do adresního řádku a kliknete na „GET DATA“. Výsledkem bude tabulka se všemi produkty na dané stránce, script automaticky vybere, co se stáhne. Můžete vypnout sloupce, které se vám nehodí, a data stáhnout jako CSV soubor. Maximálně se můžou stáhnout výsledky z 20 stránek kategorií. V mém případě jsem si stáhl URL adresy produktů, názvy produktů, ceny a skladovou dostupnost.

Problém budete mít ve chvíli, kdy ve výsledcích nebude vámi požadovaná informace. Na příkladu chybí informace o dopravě zdarma a podkategorie. Taky jsem dostal i produkty z podkategorie „Příslušenství“, což jsem nechtěl.

Také můžete narazit na web, ze kterého nestáhnete vůbec nic, prostě to nepůjde (důvodů může být spousta, nebudu je tady řešit). Proto musíte zvolit trochu pracnější možnost.

Extractor

Nejdříve si stáhněte a nainstalujte appku z Import.io. K dispozici je pro Windows, OS i Linux.

Po přihlášení do systému (třeba přes e-mail nebo Facebook) zvolíte New > Extractor. Vyberte ten s labelem „new“, u ostatních budete muset zadávat požadovaná data ručně, což je zbytečné.

Do adresního řádku zadáte URL adresu s danou kategorií produktů a zapnete (ON). Důležité je vybrat na testování tu stránku, kde budou všechna požadovaná data, abyste si je mohli navolit. Data si můžete nechat navrhnout, nebo si je vybrat dle libosti. V návrhu bude ovšem to, co v režimu „Magic“, což nebude stačit.

Vyberete ti tedy data podle svého přání, a zvolíte sloupce podle toho, co požadujete. Co se má vytáhnout ze stránky určíte tak, že po kliknutí na sloupec najedete myší nad požadovaný element, ten se zvýrazní a vy kliknete. Pro každý sloupec stačí kliknout jednou, script si doplní podobné elementy.

Jako první zvolte název produktu, když kliknete na požadovaný text názvu, musíte zvolit, že chcete více řádků (many rows). Automaticky se načtou další. Zvolíte podobně další sloupce – cenu, skladovou dostupnost a – co oproti automatickému extractoru oceníte – dopravu zdarma. Podkategorie znovu nejde vyscrapovat.

Výsledek extractoru

Vytvoříte si tedy čtyři sloupce. Kliknete na „DONE“. Na další stránce script pojmenujete a uložíte (zveřejníte – publish). Dostanete se na úvodní stránku, kde vidíte nový data set, otevřete ho kliknutím na „Open in data set“. Celé nastavení a extrahování trvá maximálně pár minut.

Ovšem vidíte výsledek jen z jedné stránky kategorie. Nepřišel jsem na to, jak vytáhnout celou kategorii najednou. Jednou z možností je přidat další URL adresy s další stránkou (druhou, třetí atd.). Lépe se asi bude pracovat se stránkami, kde lze zobrazit všechny produkty v kategorii na jedné stránce.

Co taky nefunguje (nebo jsem to neobjevil), je jak nastavit extractor pro produktovou stránku, respektive pro více stránek. Extractor funguje tak, že vytáhne data jen z jedné stránky, kterou si zvolíte. Proto je výhodnější „Magic“ než ručně vytvořený extractor (pokud vám data vyhovují).

Když budu chtít ještě další data, která už na stránce kategorií nejsou, ale můžu je vytáhnout z produktové, extractor už mi nebude stačit. Fungovat by měla kombinace extractoru z produktové stránky (v režimu one row), ze které chceme vytáhnout víc dat, a stránky kategorií – tedy dvou extractorů – ovšem nepřišel jsem na to, jak to zprovoznit, nefungovalo mi to. Dalším řešením je kombinace extractoru a crawlera, to jsem vůbec nezkoušel. Upřímně, v nastavení extractoru jsem se moc nešťoural, dával jsem přednost crawlerovi.

Crawler

Postupujte podobně jako u extractoru. Nejlepší je zvolit první produktovou stránku v kategorii.

Produktová stránka je připravená

Potvrdíte, že jste na správné stránce, a zvolíte detekci správného zobrazení. Pokud stránka vypadá jak má, znovu potvrdíte. Někdy je stránka rozbitá, appka se pak snaží najít lepší řešení (pravděpodobně vypíná JavaScript). V dalším kroku zvolíte „Single“, tedy jeden řádek na produkt.

Přidáte sloupce – postupně název produktu atd.

Nastavování sloupců

Vždy kliknutím potvrdíte, že je označována správná oblast, a kliknete na „Train“. Takhle „vytrénujete“ vše, co potřebujete. Aby došlo ke správné detekci elementů, musíte takto projít a označit minimálně 5 produktových stránek. Důležité je vybrat i ty, kde se nachází element, který není na každé stránce – v tomto případě to bude doprava zdarma.

Když máte vybrané všechny sloupce, a jsou správně vyplněné, potvrdíte, že máte hotovo. Kliknete na přidat další stránku, vložíte jí do URL řádku a potvrdíte. Postupujete stejně dále. Na produtkové stránce jsou všechna požadovaná data, včetně podkategorie, kterou lze nabrat z drobečkové navigace.

Pět připravených produktových stránek

Když je hotovo, potvrdíte, že nastavování je skončené, a data nahrajete na server Import.io. Script pojmenujete, a crawlera spustíte. V dalším kroku ho musíte nastavit.

Nastavení regulárních výrazů

Zde je potřeba přeci jen trochu programátorských znalostí, neboť musíte zadávat regulární výrazy. Je to důležité kvůli tomu, abyste si vysbírali jen data, která potřebujete. Není účelné pouštět robota na celý e-shop, když obsahuje třeba několik desítek tisíc položek. Vždy zadávejte jen rozumný počet stránek – už proto, že to bude procházet i několik hodin.

Nejdříve přepnete na pokročilé nastavení. Pokud jste postupovali podle návodu, nebude třeba mnoho úprav. V okně s URL adresami, kde má crawler začít, můžete nechat jen tu první URL, pokud je v kategorii jako první. „Kde crawlovat“ můžete ponechat.

Kde crawlovat: www.onlineshop.cz/male-elektrospotrebice/kuchynske-spotrebice/mikrovlnne-trouby/{words}/{words-num}P.html$

V „Odkud extrahovat“ by už měla být automaticky upravená URL adresa s regulárními výrazy tak, aby crawler posbíral všechny adresy správně.

V „Kde neprocházet“ můžete zadat adresu, která vyloučí všechny produkty z příslušenství.

Kde neprocházet: www.onlineshop.cz/male-elektrospotrebice/kuchynske-spotrebice/mikrovlnne-trouby/prislusenstvi/{words-num}P.html$

Zobrazit si můžete nápovědu pro regulární výrazy.

Nápověda regulárních výrazů

Kliknete na „Go“ a už vidíte náhled stahovaných dat.

Asi tak po pěti minutách přestane přibývat nových řádků, což je znamení, že je hotovo. Můžete crawlera zastavit a data nahrát na server. Data si pak můžete stáhnout v CSV souboru.

Výsledný data set

I když to byla nejpracnější a na čas nejnáročnější metoda, vidíme, že jako jediná umožnila splnění úkolu. Máme URL adresy produktů, názvy, ceny, skladovou dostupnost, informaci o dopravě zdarma a podkategorii.

Možné problémy

Crawlera jsem zkoušel asi u 10 e-shopů, jen u jednoho to nefungovalo vůbec, u jednoho byl výsledek nepoužitelný. Jaké jsou omezení je vidět u automatizovaného scriptu (Magic). U mnoha produktů chybí skladovost, to je dáno tím, že na stránce chybí CSS třída „ihnedExpedice“, podle které script detekuje, co má hledat. V tomto případě to ale nevadí, tam kde to chybí, je jasné, že zboží na skladě není. Podobně to je u dopravy zdarma ve výsledku crawlera – u většiny řádků chybí, protože robot nenašel třídu “dopravaZdarma”.

Další problém je pokud budete nastavovat regulární výrazy sami, a budete tomu rozumět jako já, dost často se vám nezadaří, a crawler se vůbec nespustí. Proto je dobré postupovat tak, aby se regulární výrazy vyplnily samy. Ve výsledku se stáhly i nějaké produkty z podkategorie příslušenství. Důvodem je nedostatečně ošetřená URL adresa s regulárními výrazy. To lze jednoduše vyfiltrovat v CSV souboru.

Autor

Miroslav Šollar

Jsem PPCčkař. Působím v Praze. 7 let mě baví a živí online marketing, posledních pět let se specializuji na PPC reklamu.