Как автоматизировать сбор статистики из Яндекс.Дзен при помощи кода

от автора

У Яндекс.Дзен нет готового 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 или в телеграм-бот.


ссылка на оригинал статьи https://habr.com/ru/articles/574224/


Комментарии

Добавить комментарий

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