Функция ImportXML в Google Spreadsheets на службе SEO

Функция ImportXML() позволяет в режиме реального времени спарсить по шаблону необходимые данные из HTML кода сторонних сайтов:

  • title;
  • h1/h2;
  • соответствие страниц canonical;
  • внешние ссылки и их анкоры;
  • списки li;
  • позиции по запросам;
  • сниппеты;
  • данные twitter;
  • страницы из XML Sitemap;
  • etc.

После чего успешно проанализировать другими функциями Excel Google Spreadsheets ошибки собственного сайта или успешных факторов ранжирования конкурентов. Подключение Google Apps Script значительно расширит возможности, но обо всем по порядку.

Материал не полный и будет дополняться новыми примерами. Буду рад любым дополнениям материала через комментарии.

Общий синтаксис функции: =ImportXML("URL"/ячейка-с-URL, "XPath Expression")

Базовая магия парсинга на примере title

  1. Создаем новую таблицу Google Spreadsheets
  2. В ячейку A1 вводим URL, например, http://syzrancev.ru
  3. В ячейку B1 вводим XPath Expression, например, //title/text()
  4. В ячейку C1 добавляем функцию =ImportXML(A1, B1)

Результатом в ячейке C1 после «Loading…» станет отображения title блога. Если этого не произошло проверьте:

  • Наличие тэга title в коде страницы.
  • Регистр тэга совпадает с указанным в функции. XPAth чувствителен к регистру.
  • URL адрес введен верно с http:// и страница отдает 200 OK ответ сервера.

Если не работает прежде чем вступать в общество рукожопов попробуйте ввести функцию без подтягивания ячеек в точной последовательности:

=ImportXML("http://syzrancev.ru", "//title/text()")

Не помогло? Проверьте подключение к интернету.

Exemples

Meta Description

=ImportXML("домен","//meta[@name='description']/@content")

Meta h1

=ImportXML("домен","//h1")

Meta Robots

=ImportXML("домен","//meta[@name='robots']/@content")

Canonical

=ImportXML("домен","//link[@rel='canonical']/@href")

Функция парсинга XML карты сайта

=ImportXML("домен/sitemap.xml", "//url/loc")

Получаем все ссылки со страницы

=importXML("домен","//a/@href")

Плагин XPath Helper для Chrome

Для упрощения работы рекомендую поставить плагин XPath Helper. После установки активируем Ctrl+Shift+X. Выделяем нужную область сайта для парсинга и нажимаем Shift — XPath код нужного фрагмента слева, значение фрагмента справа.

Пример:

Получаем тИЦ от pr-cy и любые другие данные

=importXML(CONCATENATE("http://pr-cy.ru/a/","домен"),"/html/body/div[@class='container main-content']/div[@id='analysisContent']/div[@class='row']/div[@class='col-sm-12 col-md-9 col-xs-12']/div[@id='box-basik'][1]/div[@class='row']/div[@class='col-sm-4'][1]/div[@class='pull-right'][1]/a[@class='black bold']")

Работа с результатами

Проблема: В ячейки попадают значения с переносом на новые строки, что значительно раздувает ширину строк SpreadSheet. В отличии от Excel задать размер нельзя. Google советует уменьшать шрифт.

Решение: формула =CLEAN(ячейка с текстом). Удаляет все переносы на новые строки. Создаем в новой ячейке и после отработки копируем «как значения» в нужную. Оптимально протаскивать и затем копировать столбцами. Ещё один вариант через спецсимволы. Google SpreadSheet формула =SUBSTITUTE(A1,CHAR(10),» «), где CHAR(10) спецсимвол переноса по ANSI-1251.

Предостережения и ограничения

  • Функция парсинга отправляет к сайту множество запросов и может его положить. Обход проблемы пока не найден.
  • Кривая верстка может не позволить вытащить нужный кусок.
  • Нельзя вытащить слово из предложения/абзаца.
  • После парсинга значений настоятельно рекомендую скопировать и вставить Vulue, а не формулами. Google имеет свойство пересчитывать и очень криво со временем.

Полезные ссылки

The ImportXML Guide for Google Docs

DIY SEO: How To Check On-Page Ranking Factors Using Google Docs

Обучающее видео

Google Help

Официальный tutorial по XPath

XPath Helper плагин для Chrome

XPath валидатор

  • leksuss

    Блин, ну ты сам же рукожоп. Параметры через точку с запятой надо вводить.

    • Ivan

      Зависит от настроек документа

  • Александр Абрамов

    Подскажите. Наполняю гугл-таблицу через ImportXML большим объемом данных (1500 ячеек, из которых 300 динамично изменяемые). Очень много ячеек повисло на Loading… Это гугл не вывозит такую нагрузку и повисает?

    • Averoes666

      такая же проблема…

  • Kwazark

    Как работать с данными в ячейках полученными через importXML, например мне надо курс валюты онлайн умножить на кол-во и получить результат но функция не хочет работать и утверждает что значение полученное с сайта — это текст, формат на «число» менял, не помогло.