Как стать автором
Обновить

Анализируем трафик сайтов (СМИ) с картинками

Время на прочтение8 мин
Количество просмотров2.1K

Эта статья рассказывает о необходимом минимуме, который потребуется при анализе сайта. При написании, я ориентировался на тех у кого совсем нет представления о предмете, но все упрощения можно быстро проскролить и почитать сразу про прикладную часть. Изложены подходы к тому, как должен быть организован анализ.

Говорить мы будем в основном о визитах (ym:s:visits).

Для совсем начинающих

Для совсем начинающих у Яндекса есть хороший вводный урок по базовым понятиям.

Поехали!

Введение

В начале у нас есть число, например, 585. Оно висит в воздухе и ни о чём не сообщает.

Это наше первое измерение. Число наше одиноко и лишено всякого смысла, как точка на листе бумаги.

- Это много или мало? Наверное, первое что придёт в голову.

Перво-наперво, давайте приземлим его на поверхность.

Мы добавили измерение, которое называется Время. 585 визитов за какой-то период времени. Стало понятнее, но ответов на вопросы по-прежнему нет, число нам ни о чём не говорит.

Чтобы число заговорило, его надо сравнить с каким-то другим числом.  Процедура эта крайне сложная и деликатная.

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

Лирическое отступление о сравнении

Сравнение – это такой логический приём, с помощью которого устанавливается сходство и различие предметов, явлений объективного мира

Сообщает нам учебник логики за 9 класс. Там же находим и некоторые детали приёма:

  1. Предметы должны иметь связи друг с другом;

  2. Сравнение должно иметь основу (количественные и качественные показатели);

  3. Сравнение производится по одному и тому же признаку, взятому в одном и том же отношении;

  4. И по признакам, имеющим существенное значение для предмета1

Посмотрим поглубже, обратимся к отцу логики Аристотелю. Что интересно, нашёл сравнение не в "Органоне", а в "Риторике", но тем-не менее.

Сравнение есть также метафора, так как между тем и другим существует лишь незначительная разница...

Метафору следует всегда заимствовать от сходства и [прилагать] ее к обоим из двух предметов, принадлежащих к одному и тому же роду, так, например, если фиал есть щит Вакха (Диониса), то возможно также назвать щит фиалом Арея2.

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

Так, когда поэт [говорит] об Ахилле: «Он ринулся, как лев» – это есть сравнение. Когда же он говорит: «Лев ринулся» – это есть метафора: так как оба (и Ахилл, и лев) обладают храбростью, то поэт, пользуясь метафорой, назвал Ахилла львом2.

Сравнивая с таким же временным периодом в прошлом, мы оставляем за скобками множество внешних факторов, которые воздействовали на результат: сезонные особенности, какие-то крупные события, структурные особенности коллектива (может изменения были связаны с отпуском какого-то сотрудника, или удачной работой стажёра).

Сравнивая с коллегами, нужно учитывать структурные особенности конкурентов (может у них рабочих рук просто больше).

Появляется представление о цели сравнения, что мы хотим получить в его результате. Исходя из этих целей формируются объекты сравнения.

Сравнивать в итоге мы будем цифры, но так как они были получены всегда будет несравнимыми категориями. Важным аспектом тут будет скорее соотнесение наличных средств к полученному результату. Т.е. было ли сделано максимум возможного, и если нет, то в чём проблема. Всегда нужно учитывать, что кто-то забыл поставить галочку «Отправить в Яндекс.Новости».

Что касается моего опыта, то все понедельные графики трафика имели явные провалы на выходных. Поэтому разумно было использовать показатели по 7 дней, таким образом провал попадает в учёт. Сравнивать месяц к месяцу, также имеет смысл с учётом дней недели, т.е. если этот месяц начинается со среды, в сравнении тоже лучше взять среду. Если в одном сегменте сравнения есть выходной или праздник, результаты также слегка (а бывает и сильно) «едут». Всё это нужно если не учитывать, то хотя бы иметь ввиду или просто знать.

В новостях, при каких-то резких ЧП, мы наблюдаем всплески длинной в 1-2 дня. Это пока не настала пандемия. Этот всплеск длился сильно дольше. Но думаю, принцип ясен, одной математикой тут не обойтись, нужно смотреть в содержание.

Переходим к сравнению

Ну чтож, учитывая все оговорки, понимая метафорическую сущность происходящего, приступим к сравнению. Тот же месяц в прошлом году, визитов 549.

Быдыщь в этом году рост +36, вроде всё хорошо и прекрасно. Но так ли это на самом деле? Как помним выше, в основе сравнения должны быть не только количественные, но и качественные показатели (не только сколько гектаров зяби было вспахано, но и глубина вспашки Из того же учебника Логики).

Для начала сделаем ещё один шаг вперед в показателях времени. Посмотрим, как изменялся наш трафик по неделям.

Ой-ой, у нас тут явное снижение. Всю сумму обеспечил одиночный всплеск, и сравнение теперь выглядит уже совсем по-другому.

Особенно, если мы посмотрим и на более детальные показатели второго нашего числа (а вдруг там положительная динамика?).

Сравнивая тренды, мы можем сделать более обоснованные выводы, особенно если оцениваем не только их направление но и скорость.

Добавилось представление о динамике, т.е. изменении показателей во времени, и сравнить их можно как внутри себя (понедельный спад или рост) так и между двумя разными периодами, падение или рост.

Отмечу, что это всего лишь показатель динамики, а не прогноз, в СМИ всё может очень резко поменяться под воздействием внешних факторов.

Сделаем ещё один небольшой шаг вперёд в этом направлении. Динамика хороша тем, что можно подсчитать её скорость.

Первую неделю был рост +2, потом ускоряющееся падение -1 и -2. Складываем это всё и получаем скорость динамики -1.

В то время, как в прошлом году имеем +1, +1, +1, итог +3. С этими характеристиками значения уже выглядят более внятно.

585

549

-1

+3

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

Посмотрим на структуру

Остановимся на этом в разборе показателей, завязанных на время, и посмотрим на другие показатели, так сказать, поглядим из чего состоит наше число. Введём ещё одно измерение, ось z, или разрез А-Б.

Структура трафика может быть самой разной. Метрика нам предлагает возраст, пол, типы устройств, источники трафика. Получаем продольный разрез нашей «детали».

Теперь, как вы догадались, можно вернуться к прошлому виду, и посмотреть, что делалось с каждым из них во времени, как менялись показатели. Это может натолкнуть на установление причин происходящих процессов.

Каждый из элементов имеет свою динамику, т.е. можно посмотреть как он развивается с какой скорость и сравнить всё с это с другим промежутком времени.

На картинке приведен разрез по источникам трафика, но посмотреть можно все категории, в каждой из них своя жизнь.

Самое читаемое

Введём параметр, чтобы отсеять юных завсегдатаев хакатонов с горящими глазами — это содержание. Давайте посмотрим заголовки самых читаемых материалов в нашем периоде. Какие статьи/новости и сколько набрали из этих наших 585?

Самое прямое, это количество уникальных прочтений и их распределение по материалам (если один материал набирает в 5-10-100 раз больше остальных, это несистемное явление явно). По-хорошему нормальное распределение для сайта нужно устанавливать на каком-то более-менее длительном периоде. Но в целом, и так будет понятно, девиация или всё в рамках устойчивого движения.

Добавим сравнение год к году, если вырос и трафик общий и трафик на конкретных материалах, то картина более-менее ясна. Т.е. если топ самых читаемых набирал 3-5 просмотров в прошлом году, а в этом стал набирать по 6-10, при этом трафик за период также вырос вдвое, всё сходится. Если не сходится, это повод поискать причины.

С количественными показателями покончили, разберёмся с качественными.

Что вообще читают? Насколько это соотносится с заявленной тематикой издания? Например, вы позиционируетесь как общественно-политическое издание, а в топе у вас один спорт. Или, например, основной трафик идёт в какую-то рубрику или на главную страницу. Т.е. читателям хватает того что есть на этой странице (заголовок и лид). И так далее, и нет этому конца.

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

Далее, проводим такое же сравнение с прошлым годом. Смотрим, насколько тенденции, в цифрах соответствуют тенденциям в материалах. Поменяли акценты, редакционные подходы получили взлёт/падение.

Заголовки и цифры условные, для примера
Заголовки и цифры условные, для примера

Масштабирование до рейтингов

А теперь можно ввести ещё один объект, и сравнение будет уже не внутри себя, а между объектами в одном периоде времени.

Если объектов много, можно их ранжировать по трафику и составить рейтинг.

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

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

Некоторые нюансы работы с api метрики

Как это всё работает на практике

Получаем токен, помним о лимите запросов, пишем запрос. Самое сложное это правильно выбрать группировки, список всех можно посмотреть в документации.

В заголовке нужно передать несколько специфических параметров:

header_params = {
    "GET": "/management/v1/counters HTTP/1.1",
    "Host": "api-metrika.yandex.net",
    "Authorization": "OAuth" + key,
    "Content-Type": "application/x-yametrika+json",
}

GET со значением '/management/v1/counters HTTP/1.1' ,

'Host': 'api-metrika.yandex.net'.

'Authorization': 'OAuth ' + config.key

Обратите внимание, нужно обязательно добавить перед вашим ключом 'OAuth '.

Идём дальше, под разные задачи есть разные методы. В нашем случае, нужно получить разбивку по времени, поэтому запрос отправляется к адресу https://api-metrika.yandex.net/stat/v1/data/bytime. Для получения заголовком мы будем обращаться к другому методу https://api-metrika.yandex.net/stat/v1/data/

Что там в payload:

payload={
        'ids': counter_n,
        'date1':date1,
        'date2':date2,        
        'metrics':'ym:s:visits',
        'accuracy':'full',
        'dimensions': 'ym:s:<attribution>TrafficSource',
        'attribution':'lastsign',
        'lang':'ru',
        'group':'week',
        'filters':"EXISTS(ym:s:regionAreaName == 'Москва')",
       # 'limit':150      
        }

Принцип тут простой (ids - номер(а) счетчика, дата начала и окончания периода) в параметре metrics указывается что мы собственно хотим (в примере количество визитов) и второе, куда мы это хотим приложить: dimensions. В примере это источники трафика (с группировкой 'group':'week' по неделям). Т.е. в переводе на русский язык количество визитов по каждому источнику.

Список метрик и группировок можно посмотреть по ссылке.

Список параметра attribution. Выбран последний значимый переход.

Можно использовать фильтр, в примере прописан географический по области, можно настроить другой.

Собственно, всё готово, отправляем запрос, получаем данные.

response=requests.get(
                      'https://api-metrika.yandex.net/stat/v1/data/bytime', 
  headers=header_params, 
  params=payload
)
result = json.loads(response.text)

Ответ приходит в виде jsonа, который дальше приводим в порядок. Пересчитываем, пересобираем и наслаждаемся.

Ещё пара слов о метрике

Работа с данными предполагает высокий уровень доверия к ним. Поэтому при работе с метриками нужно очень хорошо разбираться во всех нюансах, и понимать, какие параметры получают и как именно. Например есть параметр ym:s: (визиты) и параметр ym:pv: (хиты) они дают разные результаты и вообще не дружат между собой.

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

Например, на ваш сайт в прошлом месяце заходило 5 тысяч уников, в этом зашло 2, вроде бы сумма равна 7, но, если взять метрику за 2 месяца у вас могут остаться те же пять тысяч, потому что все две тысячи это не новые, а те же люди что уже заходили в прошлом месяце. И таких деталей очень много.

Заключение

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

Не буду здесь подробно описывать, как это всё работает, выложил скрипт который генерирует такую таблицу на гитхаб, пользуйтесь на здоровье https://github.com/Sstoryteller2/get_metrics.

Список литературы

  1. С.Н. Виноградов, А.Ф. Кузьмин, Логика Учебник для средней школы. Учпедгиз 1954

  2. Аристотель. Риторика. ООО «Издательство АСТ», 2017

Теги:
Хабы:
Рейтинг0
Комментарии2

Публикации

Истории

Работа

Python разработчик
136 вакансий
Data Scientist
60 вакансий

Ближайшие события