Как собрать данные из Google Search Console и построить отчетность с помощью Python и Google BigQuery > NetPeak - Независимость и осознанность
NetPeak Biz Tech    


Как собрать данные из Google Search Console и построить отчетность с помощью Python и Google BigQuery

Как собрать данные из Google Search Console и построить отчетность с помощью Python и Google BigQuery

< >

Привет! Меня зовут Антон Леонтьев, я руководитель группы веб-аналитики в компании eLama.

В 2017 году вышла моя статья «Как обработать данные по поисковым запросам из органики Google в Google BigQuery». В ней мы вручную выгружали CSV-файлы из Google Search Console, складывали их на хранение в Google BigQuery и строили отчетность. В этой статье мы научимся выгружать автоматически с помощью Python-скрипта больше информации из консоли веб-мастера Google и построим большее количество автоматических отчетов.

Что изменилось с момента выхода прошлой статьи:

Во-первых, данные по поисковым запросам в консоли веб-мастера Google и в Google ***ytics теперь хранятся 16 месяцев, а не 90 дней, как раньше.

Во-вторых, появились данные по отдельным типам поиска: Веб, Изображение, Видео. Если выгружать вручную через CSV-файлы, то количество работы увеличивается в три раза.

В-третьих, теперь консоль веб-мастера поддерживает Ресурс на уровне домена, включающий URL с любыми субдоменами (m, www и др.) и различными префиксами протокола (http, https, ftp).

Также добавлю, что вручную скачивать CSV-файлы из консоли и загружать в BigQuery стало сложнее, поскольку все чаще попадаются громоздкие поисковые запросы на несколько строк с разными разделителями (пользователи копируют куски текста и вставляют в поиск). Стандартное форматирование ломается.

Чтобы построить автоматическую отчетность, мы будем каждый месяц скачивать из консоли веб-мастера статистику за предыдущий месяц и загружать ее в облачную базу данных Google BigQuery с помощью Python-скрипта. Затем построим отчетность SQL-запросами.

Пошаговая инструкция

1. Установим последнюю версию Python3 с официального сайта. Скачиваем дистрибутив, при установке выбираем ‘Customize installation’ и устанавливаем в папку ‘C:\Python37’. Остальные параметры можно не менять. Дальнейшие действия рассмотрим на примере операционной системы семейства Windows.

2. Запустим комaндную строку.

3. Перейдем в папку, куда установился Python, и проверим его работоспособность. Для этого запустим по очереди комaнды:

cd \"C:\Python37\"python --version

4. Выполним комaнды для установки библиотек, необходимых для работы скрипта:

cd Scriptspip install --upgrade google-api-python-clientpip install pandaspip install pandas_gbqpip install --upgrade oauth2clientcd ..

5. В Google BigQuery создадим dataset, например, ‘search_console_google’. О том, как начать работать с BigQuery, можно прочитать в одной из моих предыдущих статей.

6. Нужно создать сервисный аккаунт в разделе IAM и администрирование в Google Cloud Platform, затем создать для него JSON-ключ и сохранить себе на компьютер, например, в папку ‘C:\Dropbox\gsc\’.

7. Подключите Google Search Console API для приложения в Google API Console в текущем проекте Google Cloud. Затем создайте учетные данные.

Скачайте JSON-файл с учетными данными, переименуйте его в client_secrets.json.

8. Скачайте скрипт google_seo.py себе на компьютер, например, в папку ‘C:\Dropbox\gsc\’.

Здесь скрипт google_seo.py. Важно! Файлы google_seo.py и client_secrets.json должны находиться в одной папке.

Замените в коде переменные:

  • ‘gcloud_key’ — путь к JSON-ключу от сервисного аккаунта Google Cloud из пункта 6;
  • ‘gbq_project_id’ — идентификатор проекта Google BigQuery;
  • ‘gbq_dataset’ — название dataset\\\'a в BigQuery, куда вы хотите сохранить данные;
  • ‘domains’ — список доменов-ресурсов, подтвержденных в консоли вебмастера;
  • ‘first_month’, ‘last_month’ — с какого по какой месяц выгружаем данные;
  • ‘dimensions’ — метрики, которые будем выгружать (подробнее об этом поговорим дальше).

9. Запустите скрипт, набрав в комaндной строке:

python \"C:\Dropbox\gsc\google_seo.py\"

При первом запуске откроется браузер: нужно будет авторизоваться в Google и выдать разрешение приложению на доступ к вашему аккаунту. Также при первом запуске появится предупреждение об отсутствующем файле webmasters.dat; в этом нет ничего страшного, он будет создан позднее.

Если все пройдет гладко, то в консоли после выполнения скрипта будет суммарная информация по выгрузке. Также лог сохранится в файле google_seo_log.txt в папке со скриптом.

  • search_type — тип поиска (Веб, Изображение, Видео) ;
  • all_values — сколько всего значений было выгружено (сколько строк) ;
  • values with clicks — сколько из них было с кликами (остальные — 0 кликов, то есть были только показы) ;
  • clicks sum — сумма кликов;
  • impressions sum — сумма показов;
  • dimension1 и dimension2 — выгружаемые метрики. Скрипт по умолчанию выгружает восемь метрик, которые я посчитал самыми важными; если каких-то не хватает — просто добавьте их в скрипт. Что это за метрики:

9.1. \"device\": Устройства. Аналогичный отчет из консоли веб-мастера имеет вид:

9.2. \"country\": Страны.

9.3. \"page\": Страницы сайта. Сумма кликов и сумма показов больше, чем, например, по метрике 9.1 device, так как за один результат поиска в Google может выдаваться несколько страниц одного сайта, и все они суммируются.

9.4. \"query\": Поисковые запросы. Обычно самая востребованная метрика. К сожалению, через Google API (так же, как и через обычные CSV-выгрузки в интерфейсе консоли веб-мастера) выгружаются не все поисковые запросы (сумма кликов и показов меньше, чем в нашей выгрузке по метрике 9.1 device, и меньше, чем в суммарной информации в веб-интерфейсе консоли).

9.5. \"query - device\" и 9.6. \"query - country\": Поисковые запросы с разбивкой по устройствам; по странам.

В этих двух метриках сумма кликов совпадает с 9.5 query, но сумма показов может быть больше т.к. добавляются новые запросы с показами, но без кликов (особенности API Google).

9.7. \"query - page\": Поисковые запросы с разбивкой по страницам сайта. Сумма кликов и сумма показов больше, чем, например, по метрике 9.4 query, так как за один результат поиска в Google может выдаваться несколько страниц одного сайта, и все они суммируются.

10. Также в результате выполнения скрипта для каждого домена за каждый месяц создается таблица в Google BigQuery с сырыми данными:

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

Содержание полей:

  • clicks — клики;
  • ctr — CTR;
  • impressions — показы;
  • position — позиция в поиске;
  • search_type — тип поиска;
  • domain — домен;
  • period — месяц;
  • dimension1 и dimension2 — названия метрик, а value1 и value2 — их значения.

Например, на скриншоте ниже dimension1 содержит ‘query’, а dimension2 — пустое. Значит, это поисковые запросы, которые хранятся в поле value1, а поля value2 — пустые.

11. Чтобы было легче работать с поисковыми запросами (то есть метрикой 9.4 query), создадим виртуальную таблицу (view) search_console_google.queries, содержащую этот SQL-скрипт:

Здесь скрипт queries.sql.

В этом скрипте вам нужно заменить ‘gbq_project_id’ — идентификатор проекта BigQuery — и подправить определение брендированных запросов. Затем запустите скрипт и сохраните view (представление). Эта виртуальная таблица будет содержать подробную информацию по каждому поисковому запросу за каждый отчетный месяц по каждому домену-ресурсу.

Посмотрим на результат выполнения этого скрипта (нужно нажать Edit Query, Run Query):

Колонки аналогичны таблице из пункта 10, за исключением:

query — поисковый запрос, уже отдельное поле;

query_type — тип поискового запроса, определяется в SQL-запросе. Он принимает три значения: ‘(other)’, ‘branded’, ‘not branded’.

‘(other)’ — это искусственно созданный поисковый запрос, клики и показы по которому равны сумме кликов и показов, которые не выгрузились из консоли. Рассчитывается это следующим образом: берется сумма кликов и показов по метрике device (эта сумма пpaктически всегда совпадает с общей суммой консоли веб-мастера), и из нее вычитаются суммы кликов и показов по всем выгруженным поисковым запросам. Таким образом, суммы по ‘(other)’, ‘branded’, ‘not branded’ совпадают с общими цифрами в консоли веб-мастера.

12. Используя эти данные, можно построить любые отчеты или графики в средствах визуализации или BI-инструментах. Я подготовил пять отчетов в Google Sheets. Откройте документ по ссылке и скопируйте себе, тогда у вас появится доступ на редактирование и изменение графиков. Все цифры в документе демонстрационные.

13. Отчет 1: Queries totals

На графике выводится помecячная динамика указанного показателя по выбранным доменам, типу поиска и типу запроса. Например, динамика кликов по бразильскому домену в типе поиска ‘web’ по всем типам запросов:

Или доля показов по всем доменам во всех типах поиска по поисковым фразам ‘other’ (то есть которые не выгружаются из консоли веб-мастера):

Исходными данными для листа ‘1 Queries totals’ является лист ‘1 source’, в который скопирован результат выполнения SQL-запроса. Чтобы не копировать вручную данные в ‘1 source’, можно воспользоваться аддоном OWOX BI BigQuery Reports, который будет обновлять лист каждый раз по запросу или по расписанию.

Здесь скрипт queries_report_chart.sql.

14. Отчет 2: Queries list

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

Здесь скрипт queries_report_list.sql.

15. Отчет 3: Devices

Динамика показателей: CTR, клики, показы в разрезе устройств по доменам и типам поиска. Исходные данные — на листе ‘3 source’.

Здесь запрос devices.sql.

16. Отчет 4: Countries

Здесь можно посмотреть статистику по странам. Исходные данные — на листе ‘4 source’.

Здесь запрос countries.sql.

17. Отчет 5: Pages

Таблица со статистикой кликов по страницам сайта. Список ограничен страницами с 5 и более кликами за все время.

Здесь скрипт pages.sql.

Заключение

В этой статье приведены примеры отчетов по следующим выгруженным метрикам из Google Search Console: 9.1 device, 9.2 country, 9.3 page, 9.4 query. Данные по: 9.6 query - device, 9.7 query - country, 9.8 query - page не используются, иначе статья будет очень громоздкой. Но все данные хранятся в BigQuery, и вы сможете запрашивать оттуда данные, если потребуется. Используйте и модифицируйте приведенные SQL-запросы под свои потребности или стройте отчеты на основе сырых данных в средствах визуализации и BI-инструментах: Google Data Studio, Tableau, Power BI или других.

Таким образом, мы разобрались, как можно сохранить статистику переходов из органики Google, а также автоматизировать отчетность. Если у вас есть вопросы или дополнения — пишите в комментариях.



Комментарии:

С чего начать обучение SEO и как понять, что это «твоё»

С чего начать обучение SEO и как понять, что это «твоё» Как определить, что SEO-продвижение не будет в тягость, что и кого читать начинающему специалисту...

10 04 2026 10:21:51

Мониторинг ошибок 404 с помощью специальных отчетов в Google ***ytics

Мониторинг ошибок 404 с помощью специальных отчетов в Google ***ytics Простой способ отслеживания как внутренних, так и внешних битых ссылок. Узнать больше!...

09 04 2026 8:29:15

Как выбрать трекер для мобильного приложения — часть вторая

Как выбрать трекер для мобильного приложения — часть вторая Трекеры теперь на любой вкус: за лидерство в сфере аналитики и трекинга в мире мобильных приложений все еще конкурируют более десяти различных систем. Как не растеряться в обилии инструментов?...

08 04 2026 16:48:27

Масштабный редизайн блога UniSender — рост органического трафика

Масштабный редизайн блога UniSender — рост органического трафика Как за полгода обновить корпоративный блог, зачем это может быть нужно. О том, как начинали с сегментации, внедряли SEO-рекомендации, оптимизировали ЧПУ, трaнcлитерацию, пагинацию и структуру блога вплоть до конкретной работы со статьями, рейтингами и их страницами...

07 04 2026 14:15:58

Реклама в YouTube для производителя окон в Украине — рост количества лидов на 176%

Реклама в YouTube для производителя окон в Украине — рост количества лидов на 176% Cтоимость просмотра в Google Ads дешевле как минимум в два раза по сравнению со Smart TV...

06 04 2026 2:15:56

Какие бывают движки для блогов

Какие бывают движки для блогов Бесплатные CMS помогают решить много задач без привлечения программиста или самостоятельного изучения кодов. Но у таких движков есть свои недостатки. Узнать больше!...

05 04 2026 23:12:59

Как меняются привычки пользователей и что с этим делать рекламодателям — исследование WordStream

Как меняются привычки пользователей и что с этим делать рекламодателям — исследование WordStream Эффективность рекламы в поиске падает, но растут YouTube, контекстно-медийная сеть и другие платформы...

04 04 2026 9:29:50

Что такое SEO и зачем нужна поисковая оптимизация

Что такое SEO и зачем нужна поисковая оптимизация Основные этапы раскрутки сайта. Что такое и как работает поисковая оптимизация, ее виды, особенности, преимущества...

03 04 2026 17:24:51

Как удалить себя из социальных сетей

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

02 04 2026 10:42:31

Партнерство с Amazon — всё? Что делать после уменьшения партнерских выплат

Партнерство с Amazon — всё? Что делать после уменьшения партнерских выплат Amazon сократил комиссию для сайтов партнеров от 30% до 80% — что делать дальше? Мнение эксперта....

01 04 2026 14:56:15

Как компании контролируют сотрудников в соцсетях. Три кейса

Как компании контролируют сотрудников в соцсетях. Три кейса К социальным сетям уже нельзя относиться, как к сугубо личному прострaнcтву?...

31 03 2026 19:16:36

Как настроить ремаркетинг в контекстной рекламе и социальных сетях? Пpaктика и кейсы

Как настроить ремаркетинг в контекстной рекламе и социальных сетях? Пpaктика и кейсы Спикер ОА Петр Аброськин рассказал всем читателям блога о фишках настройки ремаркетинга в контекстной рекламе и социальных сетях...

30 03 2026 20:21:43

Посиделки в офисе. Детские игры, чтобы разнообразить рабочие будни

Посиделки в офисе. Детские игры, чтобы разнообразить рабочие будни По следам «Игры в кальмара». Небольшая подборка ностальгических комaндных игр, которые могут прижиться в вашем офисе....

29 03 2026 7:50:48

Управление репутацией в сети — особенности работы с отзовиками

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

28 03 2026 9:33:14

Как выбрать сервис email-рассылок за 15 дней — кейс агентства Netpeak

Как выбрать сервис email-рассылок за 15 дней — кейс агентства Netpeak У нас на руках оказались все карты для создания собственного мини-рейтинга популярных сервисов email-рассылок....

27 03 2026 18:14:34

Веб-студии vs конструкторы сайтов: что выбрать для интернет-магазина?

Веб-студии vs конструкторы сайтов: что выбрать для интернет-магазина? Чем работа веб-студий отличается от конструкторов сайтов, как выбрать веб-студию и пять базовых понятий, которые должен знать каждый, кто решил создать сайт....

26 03 2026 1:23:53

17 полезных кейсов от спикеров 8P

17 полезных кейсов от спикеров 8P Нашим решением было трaнcлировать хотя бы часть опыта спикеров 8P, составив дайджест лучших, на их взгляд, кейсов, о которых они узнали за этот год....

25 03 2026 10:12:36

Закон о языках и ваш сайт: как создать украинскую версию и где искать удачные кейсы

Закон о языках и ваш сайт: как создать украинскую версию и где искать удачные кейсы Рекомендации и мнения экспертов по одной из самых противоречивых тем украинского интернет-прострaнcтва....

24 03 2026 1:31:57

Как продвигать посты в Instagram — пошаговая инструкция для новичков

Алгоритм настройки и запуска рекламы для SMM-, PPC-специалистов, блогеров и владельцев бизнеса....

23 03 2026 16:59:53

Подмена текста с помощью GTM — как быстро изменить контент на сайте

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

22 03 2026 10:18:50

Как выбрать инструмент для импорта данных из Google ***ytics

Как выбрать инструмент для импорта данных из Google ***ytics Визуализация данных для новичков. Отвечаем на вопрос читателя....

21 03 2026 16:11:41

Как нарисовать скелет сайта

Как нарисовать скелет сайта О создании структуры сайта на основе семантического ядра, работе с Xmind и таблицами онлайн...

20 03 2026 9:54:13

Эффективная работа с микроблогом Twitter: планирование твитов по времени

Эффективная работа с микроблогом Twitter: планирование твитов по времени Твиттереть нужно правильно. Интересная аналитики и планирование твитов по времени...

19 03 2026 20:41:48

Типы людей: желтые, красные, синие и зеленые

Типы людей: желтые, красные, синие и зеленые Как говорится, люди делятся на тех, кто делит других на типы и тех, кто не делит. В этом посте — про желтых, синих, красных и зеленых людей....

18 03 2026 22:12:59

Перенос сайта на новую CMS без потери позиций и трафика: как подготовить ТЗ программисту

Пошаговый чек-лист и описание действий SEO-специалиста на всех этапах переноса сайта на новую CMS....

17 03 2026 5:44:25

Блокировка сайтов по требованию РКН: как работают хостинги — опрос

Блокировка сайтов по требованию РКН: как работают хостинги — опрос Чтобы понять, как работает Роскомнадзор, пришлось разбираться в деталях и делать опрос по топовым хостингам. Ответы и выводы читайте в статье....

16 03 2026 13:13:10

Группировка ключевых фраз для рекламных кампаний — подробный обзор методов

Группировка ключевых фраз для рекламных кампаний — подробный обзор методов Как правильно группировать ключевые фразы для релевантности рекламных кампаний...

15 03 2026 9:35:26

Пользователи удаляют приложение — когда mobile-маркетологу не стоит волноваться

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

14 03 2026 19:34:38

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях)

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях) «Что такое диджитал и чем это отличается от услуги продвижения в социальных сетях» — о цифровой стратегии, креативных концепциях и том, как это все происходит в крупных агентствах....

13 03 2026 0:34:55

Google Ads: Планировщик рекламных кампаний в контекстно-медийной сети Google

Такое обозрение очередной новинки Google от Сергея Бахаря...

12 03 2026 19:44:21

Как SaaS-у заработать $250 000 за неделю, или Четкая инструкция от Serpstat, как провести успешную кампанию на AppSumo

Как SaaS-у заработать $250 000 за неделю, или Четкая инструкция от Serpstat, как провести успешную кампанию на AppSumo Заработок в четверть миллиона. Как многофункциональная SEO-платформа Serpstat из Netpeak Group стала самым продаваемым продуктом на AppSumo — пошаговая история-инструкция...

11 03 2026 14:12:24

LSI-текст или SEO-текст — выживет только один

LSI-текст или SEO-текст — выживет только один Специалисты, занимающиеся seo копирайтингом, рассказывают об использовании LSI: определение текста, кол во символов, подсчет слов онлайн...

10 03 2026 19:30:27

Кейс по SEO-продвижению сайта в тематике «эко-товары и натуральная косметика»: ROMI 129%

SEO-продвижение сайта, торгующего натуральной косметикой...

09 03 2026 22:10:41

Обзор: четыре новинки в Instagram

Обзор: четыре новинки в Instagram Десктопная версия, совместная работа (collabs), сбор средств и новые эффекты в Reels. Рассказываем, что дают новые функции. Узнать больше....

08 03 2026 23:48:26

Как найти потерянные конверсии — полное руководство

Как найти потерянные конверсии — полное руководство Настраиваем автоматическое получение отчетов по потерянным конверсиям для оптимизации рекламных кампаний....

07 03 2026 16:24:43

Как повысить CTR объявлений с помощью расширений

Как добиться 100% пользы от контекстных объявлений с помощью расширений...

06 03 2026 15:38:39

Семь улучшений Netpeak: скрипт GetLeads и PPC для брендинга. Выпуск второй

Семь улучшений Netpeak: скрипт GetLeads и PPC для брендинга. Выпуск второй В третьем квартале Netpeak внедрил множество крутых улучшений. Мы подробно расскажем о семи самых интересных новостях....

05 03 2026 22:12:58

Как получить доступ к API Яндекса

Как получить доступ к API Яндекса Создатель сервиса Foster Кирилл Винокуров рассказал, как зарегистрировать приложение для полноценной работы с Директом....

04 03 2026 9:21:11

Визуализация данных с помощью DataDeck

Визуализация данных с помощью DataDeck Краш-тест сервиса визуализации данных: выбираем задачу, источники, создаём отчет с помощью DataDeck. Бонус в конце — лаконичные списки преимуществ и недостатков этого инструмента и приятный подарок для дочитавших...

03 03 2026 8:54:18

10 расширений для Google Chrome в помощь SEO-специалистам

10 расширений для Google Chrome в помощь SEO-специалистам Отключение и удаление элементов, расширенные настройки, интересные дополнения и многое другое в нашем материале про мир SEO расширений....

02 03 2026 2:37:21

12 функций таблиц Google для работы с семантикой

12 функций таблиц Google для работы с семантикой + таблица с примерами использования каждой функции....

01 03 2026 13:20:48

Как анализировать эффективность рекламы в Google ***ytics? Часть вторая: пользовательские отчеты

Как анализировать эффективность рекламы в Google ***ytics? Часть вторая: пользовательские отчеты Пример пользовательских отчетов в Google ***ytics, созданных за 15 минут...

28 02 2026 16:17:23

120 пунктов продающей мобильной версии сайта — чек-лист

120 пунктов продающей мобильной версии сайта — чек-лист Пора сделать так, чтобы мобильная версия сайта приносила прибыль....

27 02 2026 12:57:59

Спикеры 8P о мобайле, программатике и инхаус комaнде мечты

Спикеры 8P о мобайле, программатике и инхаус комaнде мечты Мы попросили спикеров ответить на острые для многих онлайн-проектов вопросы о развитии мобайла как канала, программатике и строительстве инхаус комaнд...

26 02 2026 14:51:14

Как передать данные из Google ***ytics в таблицы с помощью GTM

Как передать данные из Google ***ytics в таблицы с помощью GTM Не все события удобно отслеживать в Google ***ytics, иногда удобнее сделать связку с таблицами Google. А поможет в этом Google Tag Manager...

25 02 2026 17:57:21

В Китае нет сервисов Google. Совсем. И вот что там творится

Как пользователи и разработчики приложений живут без Google Play? Авторская колонка....

24 02 2026 21:20:26

Как реклама на поиске Яндекса и в РСЯ помогла вдвое снизить цену конверсии — кейс Mechta.kz

Как реклама на поиске Яндекса и в РСЯ помогла вдвое снизить цену конверсии — кейс Mechta.kz Настроить контекстную рекламу для сети гипермаркетов бытовой техники и электроники Mechta.kz...

23 02 2026 19:53:35

Десять фишечек юзабилити — примеры, которые стоит почерпнуть

Десять фишечек юзабилити — примеры, которые стоит почерпнуть Семинар с примерами юзабилити решений от Twitter, Airbnb, Amazon и других компаний....

22 02 2026 10:36:55

Метрики вовлеченности — ER или ERR? Как считать Engagement rate в Instagram и Facebook

Метрики вовлеченности — ER или ERR? Как считать Engagement rate в Instagram и Facebook Простой и понятный разбор двух формул для расчета коэффициента вовлеченности...

21 02 2026 18:21:14

Chrome Dev Tools: 7 фишек для SEO анализа в инструментах разработчика Chrome

Chrome Dev Tools: 7 фишек для SEO анализа в инструментах разработчика Chrome Какие возможности дает Chrome DevTools для SEO-оптимизации...

20 02 2026 15:12:21

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::