<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Заметки — Игорь К.: заметки с тегом аналитика</title>
<link>https://blog.fossko.ru/tags/analitika/</link>
<description>Блог Игоря К. о маркетинге, аналитике, фотографии и жизни...</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>Блог Игоря К. о маркетинге, аналитике, фотографии и жизни...</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Как устроен маркетинг клиники «Сова»</title>
<guid isPermaLink="false">571</guid>
<link>https://blog.fossko.ru/all/kak-ustroen-marketing-kliniki/</link>
<pubDate>Mon, 24 Feb 2025 11:25:01 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/kak-ustroen-marketing-kliniki/</comments>
<description>
&lt;p&gt;Директор по маркетингу сети клиник «Сова» Марина Гребенникова, провела вебинар — 3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/sc0Wforyp2c?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;ВК: &lt;a href="https://vk.com/video-215287702_456239037"&gt;https://vk.com/video-215287702_456239037&lt;/a&gt;&lt;br /&gt;
Ютуб: &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c"&gt;https://www.youtube.com/watch?v=sc0Wforyp2c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ключевые показатели в маркетинге медицины&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Основной показатель — выручка по каждой клинике и юниту.&lt;/li&gt;
&lt;li&gt;Анализируются ежедневные и ежемесячные данные для выявления отклонений.&lt;/li&gt;
&lt;li&gt;Контролируются все каналы привлечения пациентов, включая лидогенераторы и личный кабинет.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-24.png" width="930" height="280" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример ежедневного отчета по выручки. Скриншот из вебинара &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c" class="nu"&gt;„&lt;u&gt;3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/u&gt;“&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-25.png" width="1093" height="611" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример контроля входящих заявок, который проходит еженедельно. Скриншот из вебинара &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c" class="nu"&gt;„&lt;u&gt;3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/u&gt;“&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Анализ записей и отказов&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Отслеживаются количество звонков и записи на прием.&lt;/li&gt;
&lt;li&gt;Анализируются отказы по направлениям и регионам.&lt;/li&gt;
&lt;li&gt;Важен анализ спроса и новых запросов для улучшения коммерческой стратегии.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-26.png" width="1093" height="614" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример отслеживания количества звонков, контроля входящих заявок, который проходит еженедельно. Скриншот из вебинара &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c" class="nu"&gt;„&lt;u&gt;3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/u&gt;“&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-27.png" width="1093" height="615" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример аналитики пациентов по каналам, проводится ежемесячно. Скриншот из вебинара &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c" class="nu"&gt;„&lt;u&gt;3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/u&gt;“&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Автоматизация аналитики&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Разработка автоматизированного аналитического инструмента.&lt;/li&gt;
&lt;li&gt;Использование различных источников данных, включая Яндекс.Метрику и Колтач.&lt;/li&gt;
&lt;li&gt;Важность правильного сбора и анализа данных для принятия решений.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-28.png" width="1093" height="614" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример разрабатываемой системы аналитики, и количество источников, которые используются в медицине. Скриншот из вебинара &lt;a href="https://www.youtube.com/watch?v=sc0Wforyp2c" class="nu"&gt;„&lt;u&gt;3,5 миллиарда выручки и 30% роста за год. Как устроен маркетинг клиник «СОВА»?&lt;/u&gt;“&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Использование подрядчиков и фрилансеров&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Предпочтение штатным специалистам, погруженным в нюансы работы.&lt;/li&gt;
&lt;li&gt;Подрядчики используются для SEO и тех поддержки.&lt;/li&gt;
&lt;li&gt;Важность тесного контакта и профессиональной оценки для достижения результатов.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Анализ конкурентов&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Процесс анализа конкурентов требует ручного труда и времени.&lt;/li&gt;
&lt;li&gt;Используются данные с сайтов, агрегаторов и колл-центров.&lt;/li&gt;
&lt;li&gt;Важно углубляться в анализ при появлении новых конкурентов.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Текстовая версия в блоге Ранг — &lt;a href="https://rang.ai/blog/marketing-seti-sova"&gt;https://rang.ai/blog/marketing-seti-sova&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>API от платформы vc.ru</title>
<guid isPermaLink="false">569</guid>
<link>https://blog.fossko.ru/all/api-ot-platformy-vc-ru/</link>
<pubDate>Mon, 18 Nov 2024 23:27:05 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/api-ot-platformy-vc-ru/</comments>
<description>
&lt;p&gt;На ВиСи можно получить список статей определенного пользователя используя скрытый апи.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/Jc7Hp953xg8?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Что такое скрытый апи и как его найти, рассказывает Алексей Куличевский&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;На виси есть скрытый апи, находящийся по адресу&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://api.vc.ru/v2.8/&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="879" data-ratio="3.0102739726027"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru.png" width="879" height="292" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-1.png" width="540" height="191" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Ищется скрытый апи через консоль разработчика, в гугл хроме нажимаем ctrl+shift+С — переходим в вкладку Network&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Для получения последний опубликованных статей пользователя&lt;br /&gt;
нужны следующие параметры отправляемые в гет запросе:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;markdown: false&lt;/b&gt; — как отдаются статьи, на практике у меня всегда отдаются в html, не важно что стоит true или false&lt;/li&gt;
&lt;li&gt;&lt;b&gt;sorting: new&lt;/b&gt; — сортировка, можно использовать несколько видов: ’new’, ’hotness’, ’day’, ’week’, ’month’, ’year’, ’all’&lt;br /&gt;
&lt;b&gt;lastId: 1628356&lt;/b&gt; — с какого последнего айдишника статьи продолжать показ, в получаемом джайсоне выводятся 12 элементов.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;lastSortingValue: 1730444607&lt;/b&gt; — я не разобрался что это за параметр, без него работает корректно&lt;/li&gt;
&lt;li&gt;&lt;b&gt;subsitesIds: 287399&lt;/b&gt; — ай-ди пользователя статьи которого нам нужны&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Гет запрос отправляем на адрес&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://api.vc.ru/v2.8/timeline&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-3.png" width="909" height="516" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результат выполнения гет запроса — нам нужны поля id — айди статьи, title — название статьи, дата и дата модификации — дата время в виде временной метки UNIX (число секунд, прошедших с 1 января 1970 года)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Код на питоне, для получения последних 12 статей опубликованных пользователем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;import requests
import json
import datetime

url=&amp;quot;https://api.vc.ru&amp;quot;
v_api=&amp;quot;/v2.8/&amp;quot;
metod=&amp;quot;timeline&amp;quot;
all_url=url+v_api+metod

markdown=&amp;quot;true&amp;quot;
subsitesIds=&amp;quot;287399&amp;quot;
sorting= &amp;quot;new&amp;quot;

params = {&amp;quot;markdown&amp;quot;: markdown,
          &amp;quot;sorting&amp;quot;: sorting, 
          &amp;quot;subsitesIds&amp;quot;: subsitesIds}

response=requests.get(all_url, params=params)

data = response.json()
items = data[&amp;#039;result&amp;#039;][&amp;#039;items&amp;#039;]
for index, item in enumerate(items):
        item_data = item[&amp;#039;data&amp;#039;]        
        print(f&amp;quot;Элемент {index + 1}:&amp;quot;)
        print(f&amp;quot;ID: {item_data[&amp;#039;id&amp;#039;]}&amp;quot;)
        print(f&amp;quot;url: https://vc.ru/{item_data[&amp;#039;id&amp;#039;]}&amp;quot;)
        print(f&amp;quot;Title: {item_data[&amp;#039;title&amp;#039;]}&amp;quot;)
        print(f&amp;quot;дата публикации: {datetime.datetime.fromtimestamp(item_data[&amp;#039;date&amp;#039;])}&amp;quot;)
        print(f&amp;quot;дата модификации: {datetime.datetime.fromtimestamp(item_data[&amp;#039;dateModified&amp;#039;])}&amp;quot;)  
        print()&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-2.png" width="526" height="439" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результат выполнения, если нам нужно собрать все страницы, то необходимо в параметрах передавать lastId — последний в списке айди статьи, тогда следующие будут начиная с этого ай-ди.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/alexpervushin/vcru-api/blob/main/vcru_api/sync_wrapper.py"&gt;У Александра Первушина на гитхабе проект vcru-api&lt;/a&gt;, где опубликовано описание других методов, с помощью которых можно получить другие сведения, например комментарии к статье — метод comments, текст статьи — метод content&lt;/p&gt;
&lt;p&gt;Нашлась документация по API vc.ru, dtf.ru&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://komitet.notion.site/API-TJ-vc-ru-DTF-3f5162d2cb184f6381ff82c085bbb3c0"&gt;API основы ВиСи&lt;/a&gt; — докумет в ноушене, может быть полезен&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cmtt-ru.github.io/osnova-api/v1/swagger.html#/"&gt;Описание версии апи 1.9&lt;/a&gt; —  Основа api api.yaml, общая страница на гитхабе&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cmtt-ru.github.io/osnova-api/swaggerui/index.html?urls.primaryName=v2.31"&gt;Описание версии апи 2.31&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-4.png" width="666" height="263" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Не забывайте выбрать какой апи вы будете смотреть, в списке есть версия 2.31, на ноябрь 2024 года, используется версия 2.8&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-5.png" width="797" height="931" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Дополнительные параметры которые можно посмотреть в методе timeline, оказывается можно передать несколько пользователей через запятую&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Анализ пользователей vc.ru&lt;/h2&gt;
&lt;p&gt;На основании полученных данных можно провести анализ публикаций пользователей.&lt;br /&gt;
Например, &lt;a href="https://vc.ru/u/283507-tanya-bobrova"&gt;пользователь Татьяна Боброва&lt;/a&gt; — с 15 апреля 2019 года по 22 ноября 2024 года опубликовала 5682 записи.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-6.png" width="993" height="710" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Тепловая карта количества постов по дням недели и часам публикации &lt;a href="https://vc.ru/u/283507-tanya-bobrova"&gt;пользователь Татьяна Боброва&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-7.png" width="1001" height="710" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Тепловая карта общего количества реакций по дням недели и часам публикации &lt;a href="https://vc.ru/u/283507-tanya-bobrova"&gt;пользователь Татьяна Боброва&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/api-ot-platformy-vc-ru-8.png" width="1010" height="710" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Тепловая карта общего количества комментариев по дням недели и часам публикации &lt;a href="https://vc.ru/u/283507-tanya-bobrova"&gt;пользователь Татьяна Боброва&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Когортный анализ в Tableau</title>
<guid isPermaLink="false">555</guid>
<link>https://blog.fossko.ru/all/kogortny-analiz-v-tableau/</link>
<pubDate>Thu, 04 Apr 2024 21:40:01 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/kogortny-analiz-v-tableau/</comments>
<description>
&lt;p&gt;При анализе данных о бизнесе требуется понять общее в поведении клиентов. Для этого мы объединяем их в группы по определенному признаку, например, времени регистрации — это называется когортой клиентов.&lt;/p&gt;
&lt;p&gt;Коготный анализ помогает в принятии решения «стоит ли продолжать инвестировать в рекламу?»&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Смотрим на динамику потраченных денег — это даст представление о окупаемости вложенных средств.&lt;/li&gt;
&lt;li&gt;Смотрим как окупается реклама — если реклама окупается быстрее, это позволяет постоянно не привлекать новых клиентов.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Вебинар Анастасии Кузнецовой и Андрона Алексаняна — «Собираем дашборд с нуля. Аналитика данных. Tableau. Когортный анализ»&lt;/p&gt;
&lt;p&gt;Очень здорово Анастасия показывает принцип сборки отчета в Bi системе Табло. Отчет можно попробовать повторить в других системах.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/XxiUiWdkNng?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;
00:02:37 Как понять на основе данных — окупаемость инвестиций в рекламу&lt;br /&gt;
00:05:33 Детализация дэшборда по источникам и когортам&lt;br /&gt;
00:09:43 Как использовать заготовки блоков для упрощения верстки нового дэшборда&lt;br /&gt;
00:15:39 Верстка и использование готовых блоков — для экономии времени и ресурсов&lt;br /&gt;
00:19:19 Анализ данных и когортный анализ&lt;br /&gt;
00:22:30 Почему для разных типов бизнеса могут быть разные способы формирования когорт и атрибуции&lt;br /&gt;
00:29:09 Способы визуализации данных: таблицы и линейные графики. Добавление дополнительных столбцов в таблицу, например «сколько потрачено» для каждой когорты.&lt;br /&gt;
00:31:49 Как когортный анализ может помочь в принятии решений стоит ли продолжать рекламу&lt;br /&gt;
00:39:18 Почему поверхностные выводы могут привести к ошибочным решениям&lt;br /&gt;
00:58:17 Коготный анализ для определения приоритетной аудитории рекламы&lt;br /&gt;
01:09:27 Окупаемость рекламной кампании&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Дашборд Анастасии Кузнецовой  — &lt;a href="https://public.tableau.com/app/profile/nastengraph/viz/MarketingCohortsAnalysis/MarketingCohorts"&gt;Когортный анализ для маркетинга&lt;/a&gt;&lt;/p&gt;
&lt;div class='tableauPlaceholder' id='viz1716747999857' style='position: relative'&gt;&lt;p&gt;&lt;noscript&gt;&lt;a href='#'&gt;&lt;img alt=' ' src='https:&amp;#47;&amp;#47;public.tableau.com&amp;#47;static&amp;#47;images&amp;#47;Ma&amp;#47;MarketingCohortsAnalysis&amp;#47;MarketingCohorts&amp;#47;1_rss.png' style='border: none' /&gt;&lt;/a&gt;&lt;/noscript&gt;&lt;/p&gt;
&lt;object class='tableauViz'  style='display:none;'&gt;&lt;param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /&gt; &lt;param name='embed_code_version' value='3' /&gt; &lt;param name='site_root' value='' /&gt;&lt;param name='name' value='MarketingCohortsAnalysis&amp;#47;MarketingCohorts' /&gt;&lt;param name='tabs' value='no' /&gt;&lt;param name='toolbar' value='yes' /&gt;&lt;param name='static_image' value='https:&amp;#47;&amp;#47;public.tableau.com&amp;#47;static&amp;#47;images&amp;#47;Ma&amp;#47;MarketingCohortsAnalysis&amp;#47;MarketingCohorts&amp;#47;1.png' /&gt; &lt;param name='animate_transition' value='yes' /&gt;&lt;param name='display_static_image' value='yes' /&gt;&lt;param name='display_spinner' value='yes' /&gt;&lt;param name='display_overlay' value='yes' /&gt;&lt;param name='display_count' value='yes' /&gt;&lt;param name='language' value='en-US' /&gt;&lt;/object&gt;
&lt;/div&gt;&lt;script type='text/javascript'&gt;                    var divElement = document.getElementById('viz1716747999857');                    var vizElement = divElement.getElementsByTagName('object')[0];                    vizElement.style.width='1400px';vizElement.style.height='1427px';                    var scriptElement = document.createElement('script');                    scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';                    vizElement.parentNode.insertBefore(scriptElement, vizElement);                &lt;/script&gt;
&lt;p&gt;&lt;a href="https://docs.google.com/document/d/1aKviTKP9UdLMAedvnF0OxA1mdeEMn0LBYqZsnWUirmg"&gt;Большой гайд по когортному анализу&lt;/a&gt; от Андрона Алексаняна, описывает зачем нужен когортный анализ и как провести его на SQL и Python.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://colab.research.google.com/drive/1Ecl7L7_urcFlJG0Hz9-BGNcF_L_t8dfT?usp=sharing"&gt;Блокнот с колаба с кодом питона для проведения когортного анализа&lt;/a&gt; — используется библиотека pandas.&lt;/p&gt;
</description>
</item>

<item>
<title>Техническая часть сквозной аналитики</title>
<guid isPermaLink="false">554</guid>
<link>https://blog.fossko.ru/all/tehnicheskaya-chast-skvoznoy-analitiki/</link>
<pubDate>Sat, 23 Mar 2024 12:43:24 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/tehnicheskaya-chast-skvoznoy-analitiki/</comments>
<description>
&lt;p&gt;Сквозная аналитика позволяет понять, какой канал рекламы приводит реальных клиентов и прекратить тратить на неэффективные каналы.&lt;br /&gt;
Павел Гаврилов рассказывает как организовать сквозную аналитику. Много информации про организацию и объединение данных&lt;/p&gt;
&lt;h2&gt;Павел Гаврилов, вебинар «Сквозная аналитика „для взрослых“»&lt;/h2&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/MjKYuSVqQz0?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;
00:03:56 Примеры сквозной аналитики&lt;br /&gt;
00:08:19 Создание справочника источников и правил привязок&lt;br /&gt;
00:12:37 Привязка сессий и сущностей к источникам&lt;br /&gt;
00:15:23 Привязка данных&lt;br /&gt;
00:19:09 Атрибуция данных&lt;br /&gt;
00:26:11 Рекомендации по атрибуции&lt;br /&gt;
00:41:35 Привязка контактов к заказам&lt;br /&gt;
00:43:47 Схема работы с данными&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-1.jpg" width="1031" height="1067" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Все данные сходятся в базу данных на SQL, так данные хранятся у нас. Мы сами решаем какие манипуляции производить с данными&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Виды атрибуции трафика&lt;/h2&gt;
&lt;p&gt;Как мы можем считать источники клиентов, каждая организация решает для себя.&lt;br /&gt;
Атрибуция позволяет видеть влияние различных источников на формирование заказов и принимать более обоснованные решения.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="937" data-ratio="3.19795221843"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki.png" width="937" height="293" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-1.png" width="906" height="247" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Первый или последний клик — учитывается во всей цепочке кликов, только первый или последний источник захода на сайт&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-2.png" width="914" height="281" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Последний рекламный клик — учитывается только последний клик по рекламе&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-3.png" width="907" height="303" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Последний не рекламный источник — учитывается не рекламный клик.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-4.png" width="908" height="340" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Учитываются все источники в определенной пропорции, может учитываться лишь часть источников&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-5.png" width="507" height="606" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пример организации связей в PowerBi&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://miro.com/app/board/uXjVNgnXeAw=/?share_link_id=935072029928"&gt;Схема миро с семинара&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Результат сквозной аналитики&lt;/h2&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1885" data-ratio="1.9373072970195"&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-7.png" width="1885" height="973" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/tehnicheskaya-chast-skvoznoy-analitiki-6.png" width="1684" height="950" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;В результате сквозной аналитики могут получится интерактивные дэшборды, на основании которых принимаются решения&lt;/div&gt;
&lt;/div&gt;
&lt;iframe width="100%" height="900" src="https://app.powerbi.com/view?r=eyJrIjoiY2RmNzI5MWYtYmE1Yi00ZjBiLWFiZjctNjVmMzdmNzZmZDUwIiwidCI6IjlkMDc3YWE4LTQ4MzYtNDVmNC05NDk2LTkxMzIyZmZmODgwOCIsImMiOjZ9" frameborder="0" allowfullscreen="true"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="https://elly.pw/pbi-demo"&gt;Интерактивная демонстрационная версия Elly на вымышленных данных.&lt;/a&gt; Листы можно переключать&lt;/p&gt;
</description>
</item>

<item>
<title>Курс «Датасаенс на коленке» — о работе в Google-таблицах</title>
<guid isPermaLink="false">547</guid>
<link>https://blog.fossko.ru/all/kurs-datasaens-na-kolenke-o-rabote-v-google-tablicah/</link>
<pubDate>Thu, 25 Jan 2024 15:28:12 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/kurs-datasaens-na-kolenke-o-rabote-v-google-tablicah/</comments>
<description>
&lt;p&gt;В 2022 году проходил курс Алексея Куличевского &lt;a href="https://sheets.smysl.io/"&gt;«Датасаенс на коленке» — о работе в Google-таблицах&lt;/a&gt;: учимся считать метрики, делать сквозную аналитику и когортный анализ, составлять интерактивные дешборды, моделировать юнит-экономику.&lt;/p&gt;
&lt;p&gt;После прохождения курса, я написал Алексею:&lt;/p&gt;
&lt;p class="loud"&gt;Это было очень интересно и полезно.&lt;br&gt;В блоке про когорты, понимаешь что от того как посчитаешь зависит результат. Причём отклонение в небольшую сторону порой дает противоположный результат.&lt;br&gt;Блок про дешборды один из самых интересных, после него понимаешь как устроены связи в таблицах, что из чего можно получить. &lt;br&gt;Самый главный навык, который тренируешь на курсе — умение гуглить. Разбиваешь на маленькие части и гуглишь.&lt;/p&gt;
&lt;p&gt;Алексей выложил видеокурс в свободный доступ на ютубе — 29 уроков.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/kurs-datasaens-na-kolenke-o-rabote-v-google-tablicah.png" width="1302" height="851" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;a href="https://www.youtube.com/playlist?list=PL2PN33KbuWfwAjsZk27fASuJlqZdMqIMZ"&gt;Бесплатный курс о работе в Google-таблицах — Ютуб плейлист&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Содержание курса&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=NwQRORQSocI"&gt;Урок 1. Google Sheets. Курс для маркетологов и продактов&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=PYwJEKAuyJg"&gt;Урок 2. Типы данных, работа с числами в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=LIq7dZCYpEQ"&gt;Урок 3. Адресация ячеек в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=v-Izd-X0KDM"&gt;Урок 4. Работа с текстом в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=rOWqwZjR_ZQ"&gt;Урок 5. Работа с логическими данными в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=sma2JsywTjY"&gt;Урок 6. Работа с датами в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=n9mm1-Cnz10"&gt;Урок 7. Сводные таблицы в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=H6_lSYsdcpY"&gt;Урок 8. Сквозная аналитика в Google Sheets, принцип&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=78Btb1TbNCQ"&gt;Урок 9. Сквозная аналитика в Google Sheets, практика&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=1VTHDO6aa80"&gt;Урок 10. Когортный анализ в Google Sheets, теория&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=bWsrwjbtZBQ"&gt;Урок 11. Когортный анализ в Google Sheets, практика&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=HoG_otN82kk"&gt;Урок 12. Когортный анализ в Google Sheets, применение в маркетинге&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=BIaJ1B4J9zo"&gt;Урок 14. Юнит-экономика в Google Sheets, теория&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=AosuhzlLuCQ"&gt;Урок 13. Когортный анализ в Google Sheets. Применение в других областях&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=yEH4u7y9kJ0"&gt;Урок 15. Юнит-экономика в Google Sheets, практика&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=okRaSQeVCEw"&gt;Урок 16. Моделирование юнит-экономики, часть 1&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=ny5S-sl1Okc"&gt;Урок 17. Моделирование юнит-экономики, часть 2&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=Gtkz1b6MvUw"&gt;Урок 18. Создание дешбордов. Принцип и алгоритм&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=kLglpTPGaTY"&gt;Урок 19. Дизайн дешбордов в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=4e33Oc3QmpA"&gt;Урок 20. Архитектура дешборда в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=0F773DsQeJ8"&gt;Урок 21. Слой представления | Дешборды в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=2jpgxo9an9c"&gt;Урок 22. План-факт | Дешборды в Google Sheets&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=ADnPhfM28Qw"&gt;Урок 23. Макросы&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=tDtKKEklzBs"&gt;Урок 24. Создаем собственные формулы с помощью Apps Script &lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=ms87u4aaid4"&gt;Урок 25. Обрабатываем массивы данных с помощью Apps Script&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=CGi-8QiLN-I"&gt;Урок 26. Создаем собственные меню с помощью Apps Script&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=Zwca3cjBRy8"&gt;Урок 27. Бизнес-метрики&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=prB-FS0wffE"&gt;Урок 28. Путь пользователя, конверсии и воронки&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.youtube.com/watch?v=gungYkKqSjM"&gt;Урок 29. Как понять, какие метрики измерять | Снижение уровня абстракции &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;У курса есть платная версия, в которой, помимо лекций еще есть десятки заданий и чат для их обсуждения.&lt;br /&gt;
&lt;a href="https://sheets.smysl.io"&gt;Платная версия курса&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Построение план-факта нарастающим итогом в гугл таблицах</title>
<guid isPermaLink="false">513</guid>
<link>https://blog.fossko.ru/all/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah/</link>
<pubDate>Wed, 31 May 2023 15:56:30 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah/</comments>
<description>
&lt;p&gt;Есть таблица у которой в каждой строке транзации, построим план-факт нарастающим итогом.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/image-16.png" width="237" height="393" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Исходная таблица: Дата совершения транзакции, вид транзакции, сумма транзакции&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Добавим столбец который будет считать выручку, если возврат умножаем на -1&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=ArrayFormula(IF(B2:B=&amp;quot;возврат&amp;quot;;C2:C*-1;C2:C))&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah.png" width="316" height="496" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Получаем столбец выручка, можем производить операции сложения.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;На какую дату строить отчет, в нашем случае это вчерашний вечер&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=TODAY()-1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Первый день месяца&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=EOMONTH(B2;-1)+1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Последний день месяца&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=EOMONTH(B2;0)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Количество дней в месяце&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=DATEDIF(B3;B4+1;&amp;quot;D&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;План в день = план в месяц / количество дней в месяце&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah-1.png" width="345" height="152" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Получившиеся ячейки, данные в оранжевых ячейках можно править&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah-2.png" width="471" height="719" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;При помощи формул сложения и дат строим таблицу план-факт нарастающим итогом до текущей даты&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Формула следующего дня&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=IF(AND(F31+1&amp;lt;=$B$2;F31&amp;lt;&amp;gt;&amp;quot;&amp;quot;);F31+1;&amp;quot;&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Формула проверяет выполнение двух условий с помощью функции AND():&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Увеличенное на 1 значение ячейки F31 не должно превышать или быть равным значению, указанному в ячейке B2. Эта ячейка содержит дату отчета.&lt;/li&gt;
&lt;li&gt;Сама ячейка F31 не должна быть пустой.&lt;br /&gt;
Если оба эти условия выполняются, то формула возвращает значение ячейки F31, увеличенное на 1. Если же одно из условий не выполняется, то формула возвращает пустую строку.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah-3.png" width="337" height="96" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Вычисляем план, факт и процент выполнения плана на сегодня&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/postroenie-plan-fakta-narastayuschim-itogom-v-gugl-tablicah-4.png" width="925" height="461" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Строим график сравнения плана и факта нарастающим итогом&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Данные в таблице сгенерированы и обновляются при изменении.&lt;/p&gt;
&lt;p&gt;При генерации использован следующий алгоритм:&lt;br /&gt;
Даты случайным образом генерируются от текущей даты три месяца назад&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;=RANDBETWEEN(EOMONTH(TODAY();-3);TODAY())&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вид транзакции формируется случайно: оплата или возврат&lt;br /&gt;
Сумма возврата между 100—500 ₽&lt;br /&gt;
Сумма оплаты между 100—3000 ₽&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/13AvcG6BbXT0vIEoiEtmCa1XIuNO9UyRVMQ-ITO9NtPU/edit#gid=0"&gt;Итоговая таблица план-факта выручки&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Сколько нужно зарабатывать в час, чтобы получать на руки 100 000 ₽?</title>
<guid isPermaLink="false">454</guid>
<link>https://blog.fossko.ru/all/skolko-nuzhno-zarabatyvat-v-chas-chtoby-poluchat-na-ruki-100-000/</link>
<pubDate>Tue, 18 May 2021 10:04:30 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/skolko-nuzhno-zarabatyvat-v-chas-chtoby-poluchat-na-ruki-100-000/</comments>
<description>
&lt;p&gt;Есть предприниматель, у которого организация с 6% налога на прибыль.&lt;br /&gt;
Работает один, сотрудников нет.&lt;/p&gt;
&lt;p&gt;На руки хочет получать — 100 000 ₽&lt;br /&gt;
тогда зарплата до налогов будет — 114 934 ₽&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;зарплата до налогов = зарплата на руки / (100% – подоходный налог)

зарплата до налогов = 100 000 ₽ / (100% – 13%) = 114 934 ₽&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Еще есть оплата в фонды: пенсионный фонд, социального страхования, медицинского страхования. Эти деньги работник не видит, но работодатель их платит, в среднем это около 35%. &lt;a href="https://kontur.ru/articles/4845"&gt;Для каждой организации и сотрудника разные отчисления&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Тогда сумма которую работодатель заплатит за сотрудника будет — 155 172 ₽&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;сумма оплаты в фонды= зарплата до налогов × процент оплаты в фонды

сумма оплаты в фонды= 114 934 ₽ × 35% = 40 230 ₽

зарплата для работодателя  = зарплата до налогов + сумма оплаты в фонды

зарплата для работодателя  = 114 934 ₽ + 40 230 ₽ = 155 172 ₽&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Еще есть различные накладные расходы организации: канцтовары, отправка заказных писем, банк-клиент, эцп и другие&lt;br /&gt;
Пусть накладные расходы составляют в среднем 10 000 ₽&lt;/p&gt;
&lt;p&gt;Тогда организация должна потратить на сотрудника и накладные расходы — 165 172 ₽&lt;/p&gt;
&lt;p&gt;У нас есть еще налог на прибыль — 6%&lt;br /&gt;
Считаем прибыль, с которой мы уплатим налог и получим 165 172 ₽&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;Прибыль до налогов = траты на сотрудника и накладные расходы / (100% – налог на прибыль)

Прибыль до налогов = 165 172 ₽ / (100% – 6%) = 175 715 ₽&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Получается чтобы выплатить зарплату 100 000 ₽, организация должна заработать 175 172 ₽&lt;/p&gt;
&lt;p&gt;Давайте посчитаем сколько нужно брать денег за час работы в зависимости от количества рабочих часов&lt;/p&gt;
&lt;p&gt;В месяце 160 рабочих часов, если мы будем брать деньги за все рабочие часы, то час должен стоить — 1 098 ₽&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Raschet-raboty-v-chas---Google-Tablicy---Google-Chrome-2021-05-18-10.00.37.jpg" width="923" height="214" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Если работать по 16 часов в месяц, нужно брать за час почти 11 тысяч рублей&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://docs.google.com/spreadsheets/d/1tsol_GQFilrJyfUCukmq1cN9Q_p5ockjNfb5RXqOyms/copy"&gt;Можно подставить свои данные в таблицу с расчетами&lt;/a&gt; и посмотреть сколько «стоит» час вашей продуктивной работы&lt;/p&gt;
</description>
</item>

<item>
<title>Быстрая оценка качества аудитории</title>
<guid isPermaLink="false">451</guid>
<link>https://blog.fossko.ru/all/bystraya-ocenka-kachestva-auditorii/</link>
<pubDate>Fri, 05 Mar 2021 11:26:14 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/bystraya-ocenka-kachestva-auditorii/</comments>
<description>
&lt;p&gt;Для быстрой оценки качества аудитории паблика соцсети, инстаграма или канала телеграма, используют «показатель вовлеченности по охвату» или  ERR (Engagement Rate by Reach)&lt;/p&gt;
&lt;p&gt;Для подсчета нужно взять среднее арифметическое показов постов за период и разделить на количество подписчиков. Полученное число перевести в проценты.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ERR = (Средний охват одного поста / Количество подписчиков) × 100%&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Канал &lt;a href="https://t.me/glvrdru"&gt;Максима Ильяхова&lt;/a&gt; имеет 52 000 подписчиков, в среднем просмотров одной записи — 15 000.&lt;br /&gt;
Показать вовлеченности канала Максима Ильяхова = 15 000 / 52 000 = 0,29 или 29%&lt;br /&gt;
Теперь это число можно сравнить с результатами других каналов.&lt;/p&gt;
&lt;p&gt;Канал &lt;a href="https://t.me/ilyabirman_channel"&gt;Ильи Бирмана&lt;/a&gt; — 9 000 подписчиков, просмотр постов — 3 200&lt;br /&gt;
Показатель вовлечености — 35%&lt;/p&gt;
&lt;p&gt;Канал &lt;a href="https://t.me/bureaugorbunov"&gt;Бюро Горбунова&lt;/a&gt; — 5 800 подписчиков, просмотр постов — 1 700&lt;br /&gt;
Показатель вовлечености — 29%&lt;/p&gt;
&lt;p&gt;При помощи быстрой оценки, можно сделать вывод, насколько лояльна аудитория канала.&lt;br /&gt;
Главное сравнивать каналы в одной сети и в одной категории.&lt;/p&gt;
&lt;p&gt;Инстаграм &lt;a href="https://www.instagram.com/glvrdru/"&gt;Максима Ильяхова&lt;/a&gt; — 63 200 подписчиков, лайков поста — 1 800&lt;br /&gt;
Показатель вовлечености — 2,8%&lt;/p&gt;
&lt;p&gt;Инстаграм &lt;a href="https://www.instagram.com/burosfera/"&gt;Бюро Горбунова&lt;/a&gt; — 1 000 подписчиков, лайков поста — 20&lt;br /&gt;
Показатель вовлечености — 2%&lt;/p&gt;
&lt;p&gt;Удобнее вставить данные в таблицу&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Автор&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;ТГ&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Инст&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ильяхов&lt;/td&gt;
&lt;td&gt;29%&lt;/td&gt;
&lt;td&gt;2,8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Бирман&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Бюро&lt;/td&gt;
&lt;td&gt;29%&lt;/td&gt;
&lt;td&gt;2,0%&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Показатели вовлечености каналов Ильяхова, Бирмана и Бюро Горбунова. Данные март 2021.&lt;/p&gt;
&lt;p&gt;Данные вовлечености считают, когда идет закупка рекламного трафика, то есть нужно решить размещать свой контент на площадке.&lt;/p&gt;
</description>
</item>

<item>
<title>Авторизация на сайте через питон</title>
<guid isPermaLink="false">446</guid>
<link>https://blog.fossko.ru/all/avtorizaciya-na-sayte-cherez-piton/</link>
<pubDate>Fri, 05 Feb 2021 15:11:29 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/avtorizaciya-na-sayte-cherez-piton/</comments>
<description>
&lt;p&gt;По материалам статьи: &lt;a href="https://gadjimuradov.ru/post/python-requests-avtorizaciya-na-sajte/"&gt;Python requests. Авторизация на сайте&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Я описал &lt;a href="/all/parsing-saytov-cherez-piton/"&gt;как парсить сайты через модуль requests&lt;/a&gt;. Бывают случаи когда для части сайта нужна авторизация, то есть логин и пароль.&lt;/p&gt;
&lt;p&gt;Для авторизации нужно поддерживать активную сессию в модуле requests, через session.get()&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/frilans---Jupyter-Notebook---Google-Chrome-2021-02-05-15.01.48.jpg" width="377" height="120" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;session.get(url) вместо requests.get(url)&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;import requests
import re
from bs4 import BeautifulSoup
import pandas as pd

url = &amp;#039;https://freelance.ru/login/&amp;#039;

# Важно. По умолчанию requests отправляет вот такой 
# заголовок &amp;#039;User-Agent&amp;#039;: &amp;#039;python-requests/2.22.0 ,  а это приводит к тому , что Nginx
# отправляет 404 ответ. Поэтому нам нужно сообщить серверу, что запрос идет от браузера  

user_agent_val = &amp;#039;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36&amp;#039;

# Создаем сессию и указываем ему наш user-agent
session = requests.Session()
r = session.get(url, headers = {
    &amp;#039;User-Agent&amp;#039;: user_agent_val
})

# Указываем referer. Иногда , если не указать , то приводит к ошибкам. 
session.headers.update({&amp;#039;Referer&amp;#039;:url})&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В оригинальной статье было снимание куков, я не совсем понимаю когда использовать. В данном скрипе, я это не использую.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;_xsrf = session.cookies.get(&amp;#039;_xsrf&amp;#039;, domain=&amp;quot;.freelance.ru&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Дальше посылаем post-запрос&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;login = &amp;quot;xxxx&amp;quot;
passwd = &amp;quot;xxxx&amp;quot;

post_request = session.post(url, {
    &amp;#039;login&amp;#039;: login ,
    &amp;#039;passwd&amp;#039;: passwd,
    &amp;quot;check_ip&amp;quot;: &amp;quot;on&amp;quot;,
    &amp;quot;submit&amp;quot;: &amp;quot;%C2%F5%EE%E4&amp;quot;,
    &amp;quot;auth&amp;quot;: &amp;quot;auth&amp;quot;,
    &amp;quot;return_url&amp;quot;: &amp;quot;/login/&amp;quot;
})&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для того чтобы узнать пост запрос, нужно зайти в инспектор кода, вкладка сеть, и найти запрос который посылается&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="638" data-ratio="0.70419426048565"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Freelance.Ru-_-Nastroyki---Moy-kabinet---Google-Chrome-2021-02-05-14.13.34.jpg" width="638" height="906" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/Freelance.Ru-_-Nastroyki---Moy-kabinet---Google-Chrome-2021-02-05-14.14.23.jpg" width="615" height="880" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;В submit я подставил значение из не декодированного вида.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь переходим в закрытый раздел, обновляем сессию и снимаем данные&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;url = &amp;quot;https://freelance.ru/setup/&amp;quot;
r = session.get(url)
soup = BeautifulSoup(r.text, &amp;quot;lxml&amp;quot;)
soup&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="744" data-ratio="3.7766497461929"&gt;
&lt;img src="https://blog.fossko.ru/pictures/frilans---Jupyter-Notebook---Google-Chrome-2021-02-05-15.07.28.jpg" width="744" height="197" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/Freelance.Ru-_-Nastroyki---Moy-kabinet---Google-Chrome-2021-02-05-15.07.44.jpg" width="462" height="285" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Мой рейтинг на этом сервисе.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Дальше можно снимать нужную информацию, &lt;a href="/all/parsing-saytov-cherez-piton/"&gt;используя BeautifulSoup&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Для библиотеки Requests, есть хорошие статьи от Александра, pythonru&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pythonru.com/biblioteki/kratkoe-rukovodstvo-po-biblioteke-python-requests"&gt;Краткое руководство по библиотеке Python Requests&lt;/a&gt; — рассказывает кратко, как пользоваться библиотекой.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pythonru.com/biblioteki/prodvinutoe-rukovodstvo-po-biblioteke-python-requests"&gt;Продвинутое руководство по библиотеке Python Requests&lt;/a&gt; — дополнительная информация, по объектам session, сертификатам SSL, прокси.&lt;/p&gt;
</description>
</item>

<item>
<title>Парсинг сайтов через питон модулем selenium</title>
<guid isPermaLink="false">443</guid>
<link>https://blog.fossko.ru/all/parsing-saytov-cherez-piton-modulem-selenium/</link>
<pubDate>Fri, 22 Jan 2021 17:03:17 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/parsing-saytov-cherez-piton-modulem-selenium/</comments>
<description>
&lt;p&gt;Работа идет через модуль selenium, для него нужно скачать &lt;a href="https://chromedriver.chromium.org/downloads"&gt; Chrome driver&lt;/a&gt; и браузер Chrome.&lt;br /&gt;
Важно чтобы версия  браузера и Chrome driver была одна и та же&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="779" data-ratio="2.2449567723343"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Nastroyki-O-brauzere-Chrome---Google-Chrome-2021-01-22-16.29.14.jpg" width="779" height="347" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/Downloads---ChromeDriver---WebDriver-for-Chrome---Google-Chrome-2021-01-22-16.29.42.jpg" width="745" height="390" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Версию браузера смотрим Справка → О браузере, и сверяемся с версией хром драйвер.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Чтобы точно быть уверенным, что все работает установите библиотеку selenium, импортируйте ее и запустите браузер через хром драйвер.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;pip install selenium
from selenium.webdriver import Chrome
browser = Chrome (&amp;quot;d:\del\chromedriver_win32\chromedriver.exe&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-16.34.08.jpg" width="755" height="246" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/data_,---Google-Chrome-2021-01-22-16.35.27.jpg" width="822" height="669" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Если все корректно, запускается хром в режиме: «Браузером управляет тестовое ПО»&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В тестовом браузере будут выполнятся все команды.&lt;/p&gt;
&lt;p&gt;Импортируем необходимые библиотеки&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from bs4 import BeautifulSoup
from time import sleep&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Переход на сайт&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;url = &amp;quot;https://bus.gov.ru/registry&amp;quot;
browser.get(url)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Reestr-organizaciy---Google-Chrome-2021-01-22-16.38.35.jpg" width="1131" height="605" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;В тестовом браузере открылся сайт &lt;a href="https://bus.gov.ru/registry"&gt;https://bus.gov.ru/registry&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Нужно ввести в строке поиска «онкологический диспансер»&lt;/p&gt;
&lt;p&gt;Способ 1&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;input_el = browser.find_element_by_tag_name(&amp;quot;input&amp;quot;)
input_el.send_keys(&amp;quot;онкологический диспансер&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Reestr-organizaciy---Google-Chrome-2021-01-22-16.41.08.jpg" width="951" height="488" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Вводится наименование в поле &lt;i&gt;input&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Нажать энтер или кнопку найти.&lt;/p&gt;
&lt;p&gt;Нажатие кнопки энтер:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;input_el.send_keys(Keys.ENTER)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Нажатие кнопки найти:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;browser.find_element_by_xpath(&amp;quot;/html/body/div[2]/ui-view/form/div[2]/div/div[2]/div/button&amp;quot;).click()&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Reestr-organizaciy---Google-Chrome-2021-01-22-16.41.33.jpg" width="1110" height="448" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;После выполнения кода браузер ищет диспансеры&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Дальше работаем как &lt;a href="/all/parsing-saytov-cherez-piton/"&gt;при простом парсинге сайта&lt;/a&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;soup = BeautifulSoup(browser.page_source, &amp;quot;lxml&amp;quot;)
soup&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-16.51.45.jpg" width="1102" height="324" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;В переменной &lt;i&gt;soup&lt;/i&gt; вся текущая страница&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Смотрим где содержится название учреждения и ссылка на него&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;soup.find (&amp;quot;a&amp;quot;, class_=&amp;quot;result__button&amp;quot;).get(&amp;quot;href&amp;quot;)
soup.find(&amp;quot;a&amp;quot;,class_=&amp;quot;result__title&amp;quot;).text&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-16.53.27.jpg" width="1137" height="220" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Для получения части ссылки используем запрос &lt;i&gt;get&lt;/i&gt;, для названия &lt;i&gt;text&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Чтобы не искать по всей странице, можно оставить информацию которая нам нужна, она содержится к контейнере c классом &lt;i&gt;results&lt;/i&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;orgs=soup.findAll(&amp;quot;div&amp;quot;,class_=&amp;quot;result&amp;quot;)
orgs&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-16.55.56.jpg" width="1019" height="390" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Содержимое всех контейнеров &lt;i&gt;result&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Обработка текущей страницы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;data = []
for el in orgs:
    name = el.find(&amp;quot;a&amp;quot;, class_=&amp;quot;result__title&amp;quot;).text
    link = &amp;quot;https://bus.gov.ru/registry&amp;quot; + el.find(&amp;quot;a&amp;quot;, class_=&amp;quot;result__button&amp;quot;).get(&amp;quot;href&amp;quot;)
    #print (name, link)
    data.append([name,link])
data&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-16.57.40.jpg" width="1112" height="373" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Названия учреждений и ссылка на страницу с описанием&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Нужно нажимать на страницу «следующая»&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;next_button = browser.find_element_by_class_name(&amp;quot;pagination__next&amp;quot;)
next_button.click()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Код нажимает на элемент с классом &lt;i&gt;pagination__next&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Готовый код для сбора всей информации&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;url = &amp;#039;https://bus.gov.ru/registry&amp;#039;
browser.get(url)
sleep(5)
input_el = browser.find_element_by_tag_name(&amp;#039;input&amp;#039;)
input_el.send_keys(&amp;#039;онкологический диспансер&amp;#039;)
input_el.send_keys(Keys.ENTER)
sleep(5)

data = []


for i in range(10):
    
    soup = BeautifulSoup(browser.page_source, &amp;quot;lxml&amp;quot;)
    orgs = soup.findAll(&amp;#039;div&amp;#039;, class_=&amp;#039;result&amp;#039;)
    
    for el in orgs:
        name = el.find(&amp;#039;a&amp;#039;, class_=&amp;#039;result__title&amp;#039;).text
        link = &amp;quot;https://bus.gov.ru&amp;quot;+el.find(&amp;#039;a&amp;#039;, class_=&amp;#039;result__button&amp;#039;).get(&amp;#039;href&amp;#039;)
        print(name, link)
        

        data.append([name, link])
        
    print(len(data))
    try:
        next_button = browser.find_element_by_class_name(&amp;#039;pagination__next&amp;#039;)
        next_button.click()
    except NoSuchElementException:
        continue
    sleep(6)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/selenium---Jupyter-Notebook---Google-Chrome-2021-01-22-17.01.04.jpg" width="1138" height="457" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Все данные попадают в таблицу &lt;i&gt;data&lt;/i&gt;, в ней столбец с наименованием и ссылка&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/xhEhlyFn1vM?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Подробный вебинар про модуль selenium, используется &lt;a href="https://www.anaconda.com/products/individual"&gt;среда разработки Анаконда&lt;/a&gt; с модулем Юпитер. Во второй части парсится сайт с судебными решениями.&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Парсинг сайтов через питон</title>
<guid isPermaLink="false">442</guid>
<link>https://blog.fossko.ru/all/parsing-saytov-cherez-piton/</link>
<pubDate>Thu, 21 Jan 2021 13:25:45 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/parsing-saytov-cherez-piton/</comments>
<description>
&lt;p&gt;Устанавливаем и импортируем библиотеки в питон&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;pip install requests
pip install pandas
import requests
from bs4 import BeautifulSoup
import pandas as pd
from time import sleep&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Переменной &lt;i&gt;url&lt;/i&gt; присваиваем  ссылку на страницу кинопоиска, в переменную &lt;i&gt;r&lt;/i&gt; результат гет запроса к этой странице&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;url = &amp;quot;https://www.kinopoisk.ru/s/type/film/list/1/find/%F1%E5%EA%F1/&amp;quot;
r = requests.get(url)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-12.53.48.jpg" width="1162" height="429" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Текстовое содержимое страницы сайта — &lt;i&gt;r.text&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Переведем содержимое страницы в формат кода&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;soup = BeautifulSoup(r.text, &amp;quot;lxml&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-12.56.04.jpg" width="1147" height="412" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Содержимое переменной — &lt;i&gt;soup&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/Rezultaty-poiska-(922)---Google-Chrome-2021-01-21-13.01.03.jpg" width="1629" height="461" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;При помощи инспектора кода находим контейнеры с названием фильма, годом, названием на языке оригинала и баллом кинопоиска&lt;/div&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;russian_name = soup.find(&amp;#039;div&amp;#039;,class_ = &amp;quot;element&amp;quot;).find(&amp;#039;div&amp;#039;, class_ = &amp;quot;info&amp;quot;).find(&amp;#039;a&amp;#039;, class_ = &amp;quot;js-serp-metrika&amp;quot;).text
russian_name
original_name = soup.find(&amp;#039;div&amp;#039;,class_ = &amp;quot;element&amp;quot;).find(&amp;#039;span&amp;#039;, class_ = &amp;quot;gray&amp;quot;).text
original_name
year = soup.find(&amp;#039;div&amp;#039;,class_ = &amp;quot;element&amp;quot;).find(&amp;#039;span&amp;#039;, class_ = &amp;quot;year&amp;quot;).text
year
kinopoisk = soup.find(&amp;#039;div&amp;#039;,class_ = &amp;quot;element&amp;quot;).find(&amp;#039;div&amp;#039;, class_ = &amp;quot;rating&amp;quot;).text
kinopoisk&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.04.12.jpg" width="1150" height="475" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Все данные по первому фильму встречающемуся на странице&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Находим контейнер с кусочком кода и генерируем ссылку на фильм&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;link = &amp;quot;https://www.kinopoisk.ru&amp;quot; +soup.find(&amp;#039;div&amp;#039;,class_ = &amp;quot;element&amp;quot;).find(&amp;#039;div&amp;#039;, class_ = &amp;quot;info&amp;quot;).find(&amp;#039;a&amp;#039;).get(&amp;quot;data-url&amp;quot;)
link&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1253" data-ratio="9.7890625"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.06.27.jpg" width="1253" height="128" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.08.59.jpg" width="1121" height="164" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Готовая ссылка на фильм и контейнер содержащий ссылку&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Можно составить код, который сделает таблицу, содержащую все фильмы с данной таблицы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;data = []
films =soup.findAll(&amp;quot;div&amp;quot;,class_ = &amp;quot;element&amp;quot;)
for film in films:
    russian_name = film.find(&amp;#039;div&amp;#039;, class_ = &amp;quot;info&amp;quot;).find(&amp;#039;a&amp;#039;, class_ = &amp;quot;js-serp-metrika&amp;quot;).text
    original_name = film.find(&amp;#039;span&amp;#039;, class_ = &amp;quot;gray&amp;quot;).text
    
    try:
        year = film.find(&amp;#039;span&amp;#039;, class_ = &amp;quot;year&amp;quot;).text
    except:
        year = &amp;quot;&amp;quot;
    
    try:
        kinopoisk = film.find(&amp;#039;div&amp;#039;, class_ = &amp;quot;rating&amp;quot;).text
    except:
        kinopoisk = &amp;quot;&amp;quot;
    
    link = &amp;quot;https://www.kinopoisk.ru&amp;quot; +film.find(&amp;#039;div&amp;#039;, class_ = &amp;quot;info&amp;quot;).find(&amp;#039;a&amp;#039;).get(&amp;quot;data-url&amp;quot;)
  
    #print (russian_name)
    #print (original_name)
    #print (year)
    #print (kinopoisk)
    #print (link)
    data.append([russian_name, original_name,year,kinopoisk,link  ])&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.12.30.jpg" width="1015" height="439" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Содержимое таблицы &lt;i&gt;data&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Мы можем собрать все фильмы с одной страницы. Теперь нужно сделать цикл для сбора со всех страниц данного раздела. В этом разделе 11 страниц, значит нужен цикл для формирования списка страниц&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for page in range(1,12):
    url = f&amp;quot;https://www.kinopoisk.ru/s/type/film/list/1/find/%F1%E5%EA%F1/order/relevant/page/{str(page)}/&amp;quot;
    print(url)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.15.33.jpg" width="1030" height="328" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результат выполнения цикла &lt;i&gt;for&lt;/i&gt; с полученными страницами&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь можно дополнить весь код. Не забываем про слип, так как на многих сайтах стоит защита от парсинга&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;data = []

for page in range(1,12):
    url = f&amp;quot;https://www.kinopoisk.ru/s/type/film/list/1/find/%F1%E5%EA%F1/order/relevant/page/{str(page)}/&amp;quot;
    print(url)
    
    r = requests.get(url)
    sleep(40)
    soup = BeautifulSoup(r.text, &amp;quot;lxml&amp;quot;)
    
    films = soup.findAll(&amp;quot;div&amp;quot;, class_ =&amp;quot;element&amp;quot;)

    for film in films:
        
        russian_name = film.find(&amp;quot;div&amp;quot;, class_=&amp;quot;info&amp;quot;).find(&amp;quot;a&amp;quot;).text
       # print(russian_name)
    
        original_name = film.find(&amp;quot;div&amp;quot;, class_=&amp;quot;info&amp;quot;).find(&amp;quot;span&amp;quot;, class_=&amp;quot;gray&amp;quot;).text
    
        year = film.find(&amp;quot;span&amp;quot;, class_=&amp;quot;year&amp;quot;).text

        try:
            year = film.find(&amp;quot;div&amp;quot;, class_= &amp;quot;span&amp;quot;).text
        except:
            year = &amp;quot;&amp;quot;
        
        try:
            rate = film.find(&amp;quot;div&amp;quot;, class_= &amp;quot;rating&amp;quot;).text
        except:
            rate = &amp;quot;&amp;quot;
    
        link = &amp;quot;https://www.kinopoisk.ru&amp;quot;+film.find(&amp;quot;div&amp;quot;, class_=&amp;quot;info&amp;quot;).find(&amp;quot;a&amp;quot;).get(&amp;quot;data-url&amp;quot;)
    
        data.append([russian_name, original_name, year, link])&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.18.07.jpg" width="1000" height="304" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;По мере прохождения страниц, будут печатаются страницы на которых находится сейчас робот&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Делаем заголовки таблицы и выгружаем в файл csv&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;header = [&amp;#039;russian_name&amp;#039;, &amp;#039;original_name&amp;#039;, &amp;#039;year&amp;#039;, &amp;#039;link&amp;#039;]
df = pd.DataFrame(data, columns = header)
df.head()

df.to_csv(&amp;quot;d:\data_kino.csv&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.21.39.jpg" width="1100" height="372" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;получившаяся таблица с выгрузкой&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Можно и в питоне получить список всех ссылок на фильмы, работая с таблицей&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for i in data:
    #print (i)
    link = i[3]
    print (link)&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/urok-zhurnalisty-piton---Jupyter-Notebook---Google-Chrome-2021-01-21-13.23.49.jpg" width="625" height="357" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/ZhTf6NIVLEU?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Вебинар курса «Веб-скрейпинг для журналистов. С программированием и без». Используется среда разработки &lt;a href="https://www.anaconda.com/products/individual"&gt;Анаконда&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Простая оценка проектов</title>
<guid isPermaLink="false">57</guid>
<link>https://blog.fossko.ru/all/prostaya-ocenka-proektov/</link>
<pubDate>Wed, 24 Jun 2020 15:49:18 +0300</pubDate>
<author></author>
<comments>https://blog.fossko.ru/all/prostaya-ocenka-proektov/</comments>
<description>
&lt;p&gt;Максим Дорофеев, публикует ролики оценки проектов.&lt;/p&gt;
&lt;p&gt;Первый уровень это простая диаграмма работ.&lt;/p&gt;
&lt;p&gt;Зная все работы которые есть в проекте, трудозатраты на эти работы, можно в прикинуть когда работы завершатся.&lt;/p&gt;
&lt;p&gt;Например: Студент готовится к экзамену: делает шпаргалки к билетам, прогоняет тестово весь экзамен. На каждую шпаргалку уходит от 1 до 8 часов. Он сделал таблицу с описанием работ и оценкой трудозатрат. Заносит выполненные работы в столбец «дата завершения».&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/----(Burn-Down-Chart)---Google----Opera-2020-06-24-15.36.44.jpg" width="477" height="435" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Таблица с исходными данными. Рекомендация: самая высокозатратная задача не должна быть больше в 10 раз чем самая малозатратная, в примере задачу по шпаргалке 14 билета разделили на три подзадачи.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/----(Burn-Down-Chart)---Google----Opera-2020-06-24-15.39.58.jpg" width="781" height="555" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;При помощи формул, получаем таблицу, по которой можно построить диаграмму.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="331" data-ratio="0.89945652173913"&gt;
&lt;img src="https://blog.fossko.ru/pictures/----(Burn-Down-Chart)---Google----Opera-2020-06-24-15.41.48.jpg" width="331" height="368" alt="" /&gt;
&lt;img src="https://blog.fossko.ru/pictures/----(Burn-Down-Chart)---Google----Opera-2020-06-24-15.42.34.jpg" width="385" height="357" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;Очень удобно использовать именованные диапазоны. Тогда в формулах можно ссылаться на имя диапазона, а не на ячейку. Рекомендую вначале именованного диапазона ставить одинаковый символ, тогда вы быстро сможете найти нужный диапазон. Я ставлю символ подчеркивание «_»&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.fossko.ru/pictures/----(Burn-Down-Chart)---Google----Opera-2020-06-24-15.44.23.jpg" width="676" height="463" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;В итоге можно построить диаграмму с линией тренда и определить что студент сделает все шпаргалки к 10 августа.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/PpNFgPCI-XM?enablejsapi=1" allow="autoplay" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;div class="e2-text-caption"&gt;Ролик в котором Максим очень подробно рассказывает про эту таблицу.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Таблица &lt;a href="https://docs.google.com/spreadsheets/d/1pFkuikERCdX2x8bX2TWWEUz_Fm4cjiHc2txsTU0qbks/edit?usp=sharing"&gt;в гугл таблицах&lt;/a&gt;, не забудьте сделать копию перед правкой.&lt;/p&gt;
&lt;p&gt;Таблица из ролика &lt;a href="https://forum.mnogosdelal.ru/download/file.php?id=542&amp;sid=e8eb70e3694bee5279c88045d7694ab5"&gt;в экселе&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Таблица для &lt;a href="https://yadi.sk/d/9o4sIwPVx4h3JQ"&gt;macOS numbers&lt;/a&gt;.&lt;/p&gt;
</description>
</item>


</channel>
</rss>