Маркетинг, аналитика и управление проектами

Свежие записи


Свежие комментарии


Архивы


Рубрики


Мета


Автоматический сбор популярных запросов из Яндекс.Вебмастер по всем аккаунтам

Эльдар ЗабитовЭльдар Забитов

коннектор power bi яндекс.вебмастер

Всем привет. Я сделал коннектор Power BI к Яндекс.Вебмастер, для сбора топ-500 поисковых запросов и сохранения их.

Мой коллега Костя Солодянников недавно пришел с задачей: «В Я.Вебмастере 600+ сайтов. Хочется еженедельно выгружать топ запросов по ним и писать в файл.». Ниже о том, как их получить с привязкой к конкретному домену, и записать в txt файл, а не о том, что с ними делать :)

Как это работает

Функция работает только в Power BI, т.к. Excel не поддерживает запуск R-скриптов. Функция лезет в API Я.Вебмастер и забирает топ-500 запросов по всем сайтам из аккаунта и собирает их в одну таблицу.
Внутри встроен R-скрипт, который сохраняет полученный в результате срабатывания функции датасет в .txt файл.

Ссылка на github.

 

Что умеет

  1. Вытаскивает топ-500 запросов из Яндекс.Вебмастер по всем доменам заведенным в аккаунте.
  2. Складывает их в .txt документ с разделителем табуляции с указанием домена и периода.

Что не умеет

  1. Вытаскивать запросы по конкретному домену. Если будут такие запросы — сделаю.
  2. Обрабатывать конечный текстовый файл.

Как использовать

  1. Получаем токен по ссылке;
  2. Скачиваем R, R-Studio, ActivePerl, если их еще нет. Все устанавливаем;
  3. Заходим в R-Studio и устанавливаем package «gdata»;
  4. Создаем пустой запрос в PowerBI и вставляем код в расширенный редактор (Подробнее со скринами в прошлом посте);
  5. Заменяем «C:/Users/User/Desktop/1111.txt» на свой путь и имя файла. Разрешение оставляем .txt.
  6. Вводим полученный токен и параметр, по которому формируется топ запросов
    «TOTAL_SHOWS» → если нужен топ-500 запросов по показам
    «TOTAL_CLICKS» → если нужен топ-500 запросов по кликам
  7. Список запросов сохранен в файле :)
  8. Если хотим посмотреть на сам список запросов, то заменяем в самом конце функции

    на

Функция перестанет записывать запросы в файл, но начнет их отображать.
Теперь раз в неделю, достаточно открывать функцию и нажимать «обновить».

Важно

Каждый раз, после обновления запроса, он будет дописывать в текстовый файл все свое содержимое. Как вариант решения проблемы, при обработке конечного файла, можно сцепить наименование запроса и период, после чего почистить дубли по этому столбцу.

Если возникнут сложности, попробую помочь. Если есть идеи по доработке — welcome в комментарии.

Ошибки и как их устранить

Unable to load perl libraries

77d27bd374

Некорректно установлен или не установлен ActivePerl. Ссылка на скачивание в шаге 2.

Permission denied

f6686a996c

Нет прав на запись в эту папку. Попробуйте изменить путь для сохранения файла.

  • Дмитрий Горошко

    Привет!
    Вот с такой бедой столкнулся:
    Сведения об ошибке: [DataSource.Error] Web.Contents не удалось получить содержимое из «https://api.webmaster.yandex.net/v3/user/32601778/hosts/https:entrepreneur.su:443/search-queries/popular/?order_by=12&query_indicator=TOTAL_SHOWS&query_indicator=TOTAL_CLICKS&query_indicator=AVG_SHOW_POSITION&query_indicator=AVG_CLICK_POSITION» (400): Bad Request
    Подробные сведения:
    DataSourceKind=R
    DataSourcePath=R
    Message=Произошла непредвиденная ошибка при обработке скрипта R.
    Сведения об ошибке: [DataSource.Error] Web.Contents не удалось получить содержимое из "https://api.webmaster.yandex.net/v3/user/32601778/hosts/https:entrepreneur.su:443/search-queries/popular/?order_by=12&query_indicator=TOTAL_SHOWS&query_indicator=TOTAL_CLICKS&query_indicator=AVG_SHOW_POSITION&query_indicator=AVG_CLICK_POSITION" (400): Bad Request
    ErrorCode=-2147467259
    ExceptionType=Microsoft.PowerBI.Radio.RUnexpectedException

    • Дмитрий, привет.

      Попробуй заменить последний шаг как указано в посте. Чтоб получить результаты в виде таблицы? Так все будет ок?

      Сам код скрипта ниже, его можно добавить самому, в конце.
      require(gdata)
      print(Sys.getlocale(category = "LC_CTYPE"))
      original_ctype < - Sys.getlocale(category = "LC_CTYPE") Sys.setlocale("LC_CTYPE","japanese") write.table(trim(dataset), file="C:/Users/margerko/Desktop/New folder/1111.txt", sep = "\t", row.names = FALSE, fileEncoding = "UTF-8", append=TRUE, col.names = FALSE) plot(dataset);

    • Eldar Zabitov

      Привет. На каком шаге возникает ошибка?
      (400): Bad Request чаще всего из-за неверного запроса :) Пробовали сделать все как в посте?

    • Eldar Zabitov

      Дмитрий, приветствую.
      Обнаружил и устранил проблему. Ошибка возникала если в аккаунте был сайт с неподтвержденными правами. Добавил проверку.
      Замените код на новый отсюда или с github. https://uploads.disquscdn.com/images/86309aae1d40ac66c8e8e63e841e30a86fd38132e007949ddfa5d9bf5a8adaa8.jpg

      • Дмитрий Горошко

        Спасибо! Проверю, отпишу.

  • George Shilov

    ошибку выдает https://yadi.sk/i/-6F4C8BF3KSdfQ . Может есть идеи куда копать? В гугле ничего не могу найти по ней

    • Eldar Zabitov

      1) Попробуйте установить ActivePerl
      2) Зайдите в R-Studio и скачайте пак gdata