У Яндекс.Дзен нет готового API, чтобы агрегировать статистику привычным для аналитиков и маркетологов образом. Чтобы собрать данные, нужно пройти 8 шагов: зайти на zen.yandex.ru, перейти в кабинет, затем в раздел «Статистика», потом на вкладку «Кампании», выбрать период и нажать на «Отчеты». Затем в сформировавшихся отчете Excel перейти на вкладку «Статистика кампаний по дням», выбрать нужную кампанию и создать сводную таблицу. 

Стал 1 шаг: заходим по ссылке — несколько строк кода уже зашли в Дзен и выгрузили всю нужную статистику. 

Рассказываем на своём примере, как можно оптимизировать процесс.

Проблема

Несмотря на развитость платформы, Яндекс.Дзен не так оптимизирован под рекламодателей, как, например, кабинет Яндекс.Директ — цифры приходится вытаскивать вручную не самым удобным способом. Готовых API тоже нет.

В итоге маркетологу или аналитику приходится тратить лишнее время на сбор отчетов, вместо того, чтобы потратить время более эффективно — например, на анализ и поиск способов оптимизировать показатели.

Мы разработали код, который помог нам упростить этот процесс. Делимся им с вами.

Кодинг

Шаг 1: устанавливаем нужные библиотеки — без них не заработает

import pandas as pd

import json

import requests

from datetime import datetime, timedelta

Шаг 2: вводим необходимые параметры и подключаемся к платформе

# Указать количество дней статистики

N_days = 10

# Session_id — из кук, можно взять из консоли разработчика при входе в личный кабинет как на скрине:

Консоль разработчика
Консоль разработчика

Session_id = '...'

#publisherId — это id кабинета в Zen, можно взять из url как на скрине:

Где взять ID кабинета в Яндекс.Дзен
Где взять ID кабинета в Яндекс.Дзен
publisherId = '...'

def get_zen_stat(Session_id, publisherId, N_days):

  Cookie = {

      'Session_id' : Session_id

  }

  yesterday = (datetime.now() — timedelta(days=N_days)).strftime('%Y-%m-%d')

  today = datetime.now().strftime('%Y-%m-%d')

  parameters = \

      'publisherId='+ publisherId\

      +'&from='+yesterday\

      +'&to='+today\

      +'&filterType='+'by-event'

  url = 'https://zen.yandex.ru/editor-api/v2/flights/campaigns/statistics-xls?' + parameters

  r = requests.get( url, cookies=Cookie)

  return r

r = get_zen_stat(Session_id, publisherId, N_days)

print(r)

Если ответ “<Response [200]>”, то все хорошо

Шаг 3: выбираем лист лист выгружаемого файла

# Листы выгружаемого файла

pd.ExcelFile(r.content).sheet_names

# Указать лист

selected_sheet = 'Статистика\xa0кампаний по дням'

Собрать нужные данные в датафрейм:

df = pd.read_excel(r.content, selected_sheet, skiprows = 2 )[['Срез на дату', 'Кампания', 'Показы в ленте', 'Внешние переходы', 'Расход,\nруб. (без НДС)']].drop(index=0)

df.columns = ['date', 'campaign', 'impressions','clicks','cost_without_NDS']

df['date'] =  pd.to_datetime(df['date'], format='%d.%m.%Y')

Шаг 4: выбираем кампанию

# Активные кампании за период

pd.Series(df.campaign.unique())

# Указать кампанию 

campaign = 'Mitsu_Asx'

# Отфильтровать датафрейм по выбранной кампании и получить нужные данные

df.query("campaign == @campaign").groupby(['date'], as_index=False).agg({'impressions':'sum','clicks':'sum','cost_without_NDS':'sum'}).set_index('date')

Результат

Для себя мы выгружаем данные пока в таком виде:

Таблица с данными
Таблица с данными

Это помогло нам сильно сэкономить время на процессах. В скором будущем мы планируем преобразовывать данные в json и передавать в MyBi — сервис, который мы используем для интеграции данных и разработки онлайн-дашбордов в MS Power Bi. Так мы сможем автоматически смэтчить показатели с данными из других систем, посчитать, например, конверсию в звонок или стоимость лида.

Лайфхак: когда всё настроено и введены нужные параметры, можно нажать на «Среда выполнения» — «Выполнить всё» или Ctrl+F9, это действие запустит выполнение всего кода и выдаст таблицу с данными за последние 30 дней.

В целом, с полученными данными можно сделать, что угодно: например, сделать автоматическую отправку отчета на e-mail или в телеграм-бот.

Комментарии (2)


  1. hecategram
    23.08.2021 15:55
    -2

    Вы все еще даете рекламу в Яндекс Дзен?


    1. TandemGroup Автор
      24.08.2021 16:58

      конечно, и она работает для наших клиентов