Yandex.Wordstat. Пример обработки c авторизацией на сервисах Yandex и работы с ними





Обработка, демонстрирующая авторизацию на сервисах Yandex и работу с одним из них — Yandex.Wordstat. Используется API сервиса Yandex.Direct для создания и обработки отчетов по статистике запросов.

Описание

Обработка представляет собой небольшой пример реализации взаимодействия платформы 1С:Предприятие 8 с сервисами Yandex на примере Yandex.Wordstat.

Функционал

Обработка имеет следующие возможности:

  1. Получение статистики запросов для ключевых фраз для введенного запроса.
  2. Получение статистики запросов для связанных ключевых фраз.
  3. Выполение авторизации на сервисах Yandex с помощью токенов доступа. Для получения токена нужно ввести идентификатор приложения, которое нужно зарегистрировать по ссылке.

Особенности

Взаимодействие с сервисом Yandex.Wordstat осуществляется по средствам выполнения POST-запросов, данные в теле которых передаются в формате JSON. Подробнее о вызываемых в примере методах Вы можете прочитать в официальной документации API Yandex.Direct, который и предоставляет возможность работы с отчетами Yandex.Wordstat.

При решении практической задачи возникла трудность с кодировкой для кирилицы. Если в теле запроса содержались символы кирилицы, то появлалась следующая ошибка:

Самостоятельно решить проблему не удалось. Пошел другим путем — создал утилиту на .NET Framework 4.5 для отправки POST-запросов. Больше проблем с кирилицей не возникало. В обработке есть два режима отправки POST-запросов: собственными средствами платформы и с помощью утилиты (не забудьте на машине установить .NET Framework 4.5). 

Если кто-то из читателей поможет решить проблему с кодировкой, то буду премного благодарен!

По теме

Если интересно, то в статье «GET и POST-запросы из 1С:Предприятия 8« описал использование POST-запросов как в формате JSON, так и с использование SOAP. Там же есть тестовая конфигурация со всеми примерами.


Мой блог: www.develplatform.com

13 Comments

  1. Ele1234567

    Для интернет-предпринимателя то что нужно)

    Reply
  2. chingiz001

    Что-то не получается у меня запустить. Вроде зарегистрировал, но потом при подключении пишет, что нет Callback URL. А где я его возьму? Автор, хотя бы в общих чертах написал, как регистрировать это приложение. Я, например с API Яндекса вообще не сталкивался, и как проходит регистрация плохо представляю. Если не затруднит, автор, набросайте маленький мануальчик. Очень хочется посмотреть данную разработку.

    Reply
  3. YPermitin

    (2) chingiz001, посмотрите официальную документацию от Yandex. Нет смысла писать то же самое: инструкция

    Reply
  4. chingiz001

    За ссылку спасибо, что-то я сам не нашел, сорри. Потестим.

    Reply
  5. infantik

    Зарегистрировал приложение.

    Прошел авторизацию — пишет -токен досутупа успешно получен.

    Нажимаю Получить статистику — выдает ошибку «Ошибка авторизации сервисами Yandex. Код ошибки: 53. Описание: Authorization error».

    Помогите решить

    Reply
  6. Cifer

    (5) infantik, нужно зарегистрировать заявку на доступ к API по адресу https://oauth.yandex.ru

    Reply
  7. Zamza

    Из описания API:

    Один пользователь за сутки может получить статистику поисковых запросов для 1000 фраз.

    При вызове метода расходуются баллы (см. Ограничения на использование). Если баллов недостаточно, возвращается сообщение об ошибке 152.

    Для одного пользователя на сервере хранится не более пяти отчетов (по всем кампаниям). При попытке сформировать шестой отчет возвращается сообщение об ошибке с кодом 31. Отчеты хранятся на сервере в течение пяти часов, а затем автоматически удаляются.

    Получается, что пользоваться данным API для практических целей не возможно? Или каким-то образом можно получить у Яндекса «бонусные» балы?

    Похожая проблема с кодировкой была при работе с Яндекс картами. Решил её в лоб — посимвольным переводом кириллицы в «%-кодировку».

    Reply
  8. YPermitin

    (7) Zamza, на практике пользоваться можно, но не для масштабных задач с проверкой 1 000 000 ключевых слов.

    Например, делал подсистему управления рекламными кампаниями. Там был сбор статистики по ключевым словам и ограничение не было критичным.

    Про бонусные баллы мне не известно) Но думаю обойти ограничение возможно. Самый простой вариант раньше был использование разных учетных записей.

    Похожая проблема с кодировкой была при работе с Яндекс картами. Решил её в лоб — посимвольным переводом кириллицы в «%-кодировку».

    А можете показать свое решение? В моем случае это не получилось сделать, т.к. Yandex ругался на некорректный запрос. Хочу посмотреть может что упустил.

    Reply
  9. Zamza

    Скачал обработку. Попытался зарегистрироваться в Яндексе. Оказалось, что сейчас если регистрироваться по простому, то дают доступ только в песочницу. Основное ограничение — в песочнице всё что возвращает API — случайные числа.

    Для полного доступа запрашивают:

    Опишите, пожалуйста, более подробно, как и какие методы API Директа использует Ваша программа: названия методов; для каких целей используются методы; схема и последовательность вызова методов; с какой частотой производится вызов каждого метода (раз в минуту, раз в час и т.д.) и для каких целей выбрана именно эта частота. Также опишите, как программа производит обработку ошибок, возникающих при работе с API, и как программа учитывает текущие ограничения API Директа.

    Но если ответите на эти вопросы, то доступ дают.

    Reply
  10. AASycheva

    При попытке открыть обработку, выходит ошибка «Обращение к процедуре как к функции (ЗаписатьJSON). Что можно предпринять?

    Reply
  11. YPermitin

    (10) Обработку уже не планирую дорарабывать.

    Ошибка связана с тем, что в новых версия платформы 1С появилась собственная функция для работы с JSON с тем же именем, как и в обработке.

    Нужно адаптировать для новой платформы.

    Изначально обработка создавалась как пример для разработчиков, для использования в работе она малопригодна.

    Reply
  12. ak_register

    Два дня убил на поиск проблемы с кодировкой!

    Нужно из файла убрать маркеры BOM.

    Вот решение:

    //ТекстовыйФайл = Новый ТекстовыйДокумент;

    //ТекстовыйФайл.УстановитьТекст(СтрокаJSON);

    //ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI);

    ЗаписьТекста = Новый ЗаписьТекста(ФайлЗапроса, КодировкаТекста.ANSI);

    ЗаписьТекста.Закрыть();

    ЗаписьТекста = Новый ЗаписьТекста(ФайлЗапроса,,, Истина, Символы.ПС);

    ЗаписьТекста.Записать(СтрокаJSON);

    ЗаписьТекста.Закрыть();

    Прошу плюсовать. 🙂

    Reply
  13. YPermitin

    (12) у меня аж флэшбэк случился 🙂

    Спасибо за решение 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *