Analýza indexace – Scrape SERPu Seznamu

  • Adam Telička
WEBOO_BLOG_scraping_SERPu_Seznam.jpg

Vyhledáváte na Seznamu? Že ne? A znáte alespoň někoho kdo na Seznamu vyhledává? Já taky ne. Přesto je 14 % všech dotazů na českém trhu vyhledávačů položeno právě přes Seznam (zdroj tady). Pro některé množiny klíčových slov to může být i více. A to znamená, že Seznam pořád nemůžeme úplně vyloučit z SEO prací. Ne, že by se každá stránka měla optimalizovat nadvakrát, ale minimálně bychom se mohli ujistit, že jsou naše ultra vybroušené stránky vůbec dohledatelné. V minulém článku jsem popsal, jak rychle získat Googlem indexovaná URL. Teď se teda koukneme na zub Seznamu.

Stejně jako u minulého článku podotýkám, že jsou supr žůžo nástroje, které zjistí stav indexace sady URL za pár vteřin. Na SEO restartu 2018 nicméně pánové Kirschner a Vondrášek (kteří se podílí na vývoji Seznamu, jakožto vyhledávače) vybízeli, ať se někdy podíváme i na poslední stránku Seznamu, že budeme překvapeni. Tentokrát nemám žádný kouzelný bookmarklet, takže budeme muset klikat víc, než dvakrát.

 


Co je k tomu teda potřeba?

Pár základních věcí, kterými by měl (kdyžtak se neuraž) disponovat každý, kdo se proklamuje za SEO specialistu.

Tip: Pokud OpenRefine nejede, je možné, že nemáte nainstalovanou Javu. Stáhnete kdyžtak tady: https://java.com/en/download/)


Krok 1 – Příprava vstupních dat

Jakmile víme, pro jaký dotaz chceme zjistit výsledky, tak jej dostaneme do následujícího tabulkového tvaru:

Dotaz x Stránka
site:domena.cz 0 1
site:domena.cz 10 2
site:domena.cz 20 3
site:domena.cz 30 4


 Do sloupce „Stránka“ vložte čísla stránek, které chcete skrejpovat, nejlépe až právě po tu poslední. Sloupec „x“ je vlastně jednoduchý vzoreček ve tvaru „stránka x 10 - 10“. Případně pro tvorbu této tabulky můžete využít tento excel s makrama, se kterým se nemůžete seknout.

NADUPANEJ EXCEL S MAKRAMA KE STAŽENÍ 

 

Jak s tímto souborem pracovat?

  1. Otevřeme soubor
  2. Ujistíme se, že jsme na Listu 1
  3. Klikneme na „Povolit úpravy“ & „Povolit obsah“ ve žluté vrchní liště
  4. Nasypeme klíčová slova / site:doména.cz do řádků
  5. Nastavíme počet požadovaných stran stran (Pzn. V souboru je sice nastavený cap na 10 stránek, ale kdokoliv, kdo s Excelem dělal déle, než 5 minut, si to zvládne upravit ;) )
  6. Klik na „Spustit“

 Pro jistotu přikládám obrázkový návod. Grafik má sice pořád dovolenou, ale já to stejně umím nejlíp.

 

Hotovo? Oukej, mělo by nám vyjet něco takového:

Tyhle tři sloupce si zkopírujeme  (klasika klik do tabulky a CTRL + A) a můžeme se přesunout na zábavnou část :)


Krok 2 – OpenRefine kouzelnictví

 OpenRefine je takový namakaný Excel, který umí úplně všechno. Začátky jsou s ním trochu složité a není úplně intuitivní, ale po chvíli na něj nikdo nedá dopustit.

Postup pro začátečníky:

  1. Otevřeme OpenRefine
  2. Klik na „Clipboard“ a vložíme naše tři sloupečky
  3. Klik na „Next“
  4. Klik na „Create Project“
  5. Klik na Undo / Redo
  6. Klik na „Apply“

Zase pro jistotu vkládám obrázek toho, jak by to mělo vypadat.

Do prázdného místa je teď třeba vložit tento skript:

[
  {
    "op": "core/column-addition",
    "description": "Create column url verze at index 1 based on column Dotaz using expression grel:value.escape('url')",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "newColumnName": "url verze",
    "columnInsertIndex": 1,
    "baseColumnName": "Dotaz",
    "expression": "grel:value.escape('url')",
    "onError": "set-to-blank"
  },
  {
    "op": "core/column-addition-by-fetching-urls",
    "description": "Create column URL at index 2 by fetching URLs based on column url verze using expression grel:\"https://search.seznam.cz/?q=\"+ value + \"&count=10&from=\" + cells[\"x\"].value",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "newColumnName": "URL",
    "columnInsertIndex": 2,
    "baseColumnName": "url verze",
    "urlExpression": "grel:\"https://search.seznam.cz/?q=\"+ value + \"&count=10&from=\" + cells[\"x\"].value",
    "onError": "set-to-blank",
    "delay": 500,
    "cacheResponses": true,
    "httpHeadersJson": [
      {
        "name": "authorization",
        "value": ""
      },
      {
        "name": "user-agent",
        "value": "OpenRefine 3.1 [b90e413]"
      },
      {
        "name": "accept",
        "value": "*/*"
      }
    ]
  },
  {
    "op": "core/multivalued-cell-split",
    "description": "Split multi-valued cells in column URL",
    "columnName": "URL",
    "keyColumnName": "Dotaz",
    "mode": "separator",
    "separator": "h3 class=",
    "regex": true
  },
  {
    "op": "core/fill-down",
    "description": "Fill down cells in column Dotaz",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "Dotaz"
  },
  {
    "op": "core/fill-down",
    "description": "Fill down cells in column Stránka",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "Stránka"
  },
  {
    "op": "core/column-addition",
    "description": "Create column Titulek at index 3 based on column URL using expression grel:value.get(indexOf(value,\"<span>\")+6, indexOf(value,\"</span>\"))",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "newColumnName": "Titulek",
    "columnInsertIndex": 3,
    "baseColumnName": "URL",
    "expression": "grel:value.get(indexOf(value,\"<span>\")+6, indexOf(value,\"</span>\"))",
    "onError": "set-to-blank"
  },
  {
    "op": "core/text-transform",
    "description": "Text transform on cells in column Titulek using expression grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "Titulek",
    "expression": "grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10
  },
  {
    "op": "core/text-transform",
    "description": "Text transform on cells in column Titulek using expression grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "Titulek",
    "expression": "grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10
  },
  {
    "op": "core/text-transform",
    "description": "Text transform on cells in column Titulek using expression grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "Titulek",
    "expression": "grel:value.replace(value.get(indexOf(value,\"<\"), indexOf(value,\">\")+1),'')",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10
  },
  {
    "op": "core/text-transform",
    "description": "Text transform on cells in column URL using expression grel:value.get(indexOf(value,\"href=\")+6, indexOf(value,\"><span>\")-1)",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "URL",
    "expression": "grel:value.get(indexOf(value,\"href=\")+6, indexOf(value,\"><span>\")-1)",
    "onError": "keep-original",
    "repeat": false,
    "repeatCount": 10
  },
  {
    "op": "core/column-addition",
    "description": "Create column das at index 3 based on column URL using expression grel:value.contains(\"data-dot\") AND vlaue.contains(\"download.seznam\")",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "newColumnName": "das",
    "columnInsertIndex": 3,
    "baseColumnName": "URL",
    "expression": "grel:value.contains(\"data-dot\") AND vlaue.contains(\"download.seznam\")",
    "onError": "set-to-blank"
  },
  {
    "op": "core/row-removal",
    "description": "Remove rows",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "das",
          "expression": "value.split(' ')",
          "columnName": "das",
          "invert": false,
          "selection": [
            {
              "v": {
                "v": "true",
                "l": "true"
              }
            }
          ],
          "selectNumber": false,
          "selectDateTime": false,
          "selectBoolean": false,
          "omitBlank": false,
          "selectBlank": false,
          "omitError": false,
          "selectError": false
        }
      ],
      "mode": "row-based"
    }
  },
  {
    "op": "core/column-removal",
    "description": "Remove column url verze",
    "columnName": "url verze"
  },
  {
    "op": "core/column-removal",
    "description": "Remove column x",
    "columnName": "x"
  },
  {
    "op": "core/column-removal",
    "description": "Remove column das",
    "columnName": "das"
  },
  {
    "op": "core/blank-down",
    "description": "Blank down cells in column URL",
    "engineConfig": {
      "facets": [],
      "mode": "row-based"
    },
    "columnName": "URL"
  },
  {
    "op": "core/row-removal",
    "description": "Remove rows",
    "engineConfig": {
      "facets": [
        {
          "type": "list",
          "name": "URL",
          "expression": "isBlank(value).toString()",
          "columnName": "URL",
          "invert": false,
          "selection": [
            {
              "v": {
                "v": "true",
                "l": "true"
              }
            }
          ],
          "selectNumber": false,
          "selectDateTime": false,
          "selectBoolean": false,
          "omitBlank": false,
          "selectBlank": false,
          "omitError": false,
          "selectError": false
        }
      ],
      "mode": "row-based"
    }
  }
]

 

Vteřinku teď necháme OpenRefine pracovat a voilà, vyskočí na nás URL adresy. Jako bonus jsem do skriptu hodil i zobrazovaný titulek. Tedy ne titulek, který máte na stránkách nastavený, ale ten, který se reálně zobrazuje.

Výsledek tedy bude vypadat takhle:

Teď už jen stačí exportovat :)

 

Co teď s tím? Všechno možné.

Dozvíte se někdy v dalším článku ;)

profilovky adam
Autor

Bc. ADAM TELIČKA

SEO mág Adam je kromě optimalizace pro vyhledávače šikovný textař, e-mail markeťák, linkbuilder a specialista na gramatické oříšky.

Email: Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript.

instagram.com/weboo.eu

    Copyright © 2018 | Created in Zlin by Weboo.eu | All rights reserved

    No Internet Connection
    Notification