Парсинг Instagram в промышленных масштабах Хабр

Что такое парсер и парсинг Инстаграм

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

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

По геолокациям

Следующий способ сбора — по геометкам в публикациях. Смысл парсинга по гео — найти пользователей, которым будет удобно купить именно у вас, так как вы находитесь для них в шаговой доступности (рядом дом, работа, молл или тц).

1. Разберёмся, как спарсить ЦА по гео в Инстаграме с помощью SocialKit. Заходим «Формирование аудитории — По геолокациям». Далее вкладка «ГЕО-координаты» и кликаем на кнопку «Поиск координат на карте мира».

2. Вписываем адрес своего магазина. Пусть у нас будет магазин подарков в торговом центре «Европа» в Калининграде. Указываем конкретный адрес или находим нужное место на карте.

3. Два раза щёлкаем левой кнопкой мыши в том месте, которая будет попадать в область сбора, далее таким же образом ставим второй маркер. И видим территорию, по которой мы соберём все геолокации. Жмём «Применить».

4. Когда окно с картой закроется, кликаем «Собрать гео-метки». Собранные геолокации будут показаны «Визуальном списке».

5. Переходим ниже и оставив настройки по умолчанию, жмём «Собрать пользователей».

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

Как работать с парсерами

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

Зачем нужно парсить Инстаграм

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

  • формировании базы ЦА;
  • сборе нужной информации о социальном, демографическом, профессиональном и других статусах пользователей;
  • очищении контактов от неактивных и коммерческих страниц.

Недостатки парсинга

Среди основных недостатков этого метода можно выделить:

  • риск блокировки аккаунта из-за подозрительной активности;
  • вероятность получения неточных данных по географическому положению пользователей;
  • не всегда получается автоматически удалять ботов и коммерческие профили.

Логи

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

В структуре tasks_log хранятся логи, описывающие результат работы каждого запроса каждого исполнителя.

tasks_log = {     '0': [task_log] массив логов для исполнителя     с идентификатором exec_id = 0,     '1': [task_log] для exec_id = 1,     ...     'n': [task_log] для exec_id = n, } 

где каждый task_log имеет вид

task_log = {     'type' : тип запроса: 'user' или 'post',     'success' : True или False,     'time' : время запроса,     'payload' : идентификатор пользователя или поста,     в зависимости от запроса } 

в случае неуспеха task_log.payload имеет вид

task_log.payload = { 		'type' : тип запроса,     'success' : False,     'time' : время запроса,     'payload' : идентификатор поста или пользователя,     'last_json' : ответ API Инстаграм  } 

Пример анализа

Создадим потрет аудитории аккаунта, продающего фитнес-резинки и ленты для занятий спортом дома: • Пол: Женский • Возраст: 20-30 лет • Местоположение: Россия • Семейное положение: не замужем, нет детей. • Образование: Получает высшее образование или получила его недавно. • Финансовое состояние: Живет одна и строит карьеру. Много работает, не успевает ходить в тренажерный зал.

• Увлечения: читает книги, постоянно развивается, ведет активную социальную жизнь. Интересуется блогерами в Инстаграм и популярными артистами. • Ценности и жизненные позиции: старается следить за фигурой и правильно питаться. Для нее важен ее внешний вид. • Мечты, страхи и болевые точки: мечтает о красивом теле. Хочет достичь успеха и гордиться собой. Боится целлюлита и лишних килограмм. Стесняется ходить в тренажерный зал и тренироваться перед другими людьми. Боится, что у нее не получится. Хочет подтянутую и гладкую кожу.

Насколько внимательно вы читали то, что я говорила про Instaplus.me? Вот тут те же функции, но в мобильном приложении. Это даже не совсем приложение, а именно программа.

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

Вообще очень удобно, когда вы сомневаетесь, будет ли ваш ноутбук рядом в ближайшее время, а парсинг Инстаграм по геолокации или аккаунтам настраивать надо. Движок у программы такой же, просто он заточен под работу на телефоне без использования Гугла.

Вам в помощь:

  1. Раздел как установить, где есть подробные видео с Ютуба, как установить программу на Xiaomi, Huawei, Samsung, других смартфонов с Android (тут может немного отличаться интерфейс), на компьютер. Не спрашивайте, зачем нужно последнее. Просто многим так удобнее.
  2. Есть тестовая версия, которая позволит поиграться со всеми инструментами, чтоб точно освоить парсинг. Бесплатного периода на 5 дней для обучения вам хватит.
  3. Регистрация только через электронную почту, с паролями от соцсетей сайт дела не имеет.

Стоимость от 399р за месяц использования.

Перейти в Instaplus.pro

По хэштегам

Чтобы собрать аудиторию по хэштегам, заходим «Формирование аудитории — По хэштегам». И задём тему подбора хэштегов — ключевые слова по нашей тематике: [подарки, новый год, подарок любимому] и прочие. Принцип такой же, как и при поиске конкурентов.

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

Способы сбора целевой аудитории в Instagram

Конкуренты

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

Геолокация

Этот способ определит, в каком городе находится пользователь, чья информация попала в список. Такая опция особенно полезна для региональных компаний.

Каким образом я её решал

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

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

  1. Принцип майнинга данных из инстаграмма с помощью одного аккаунта, какие ограничения на это есть.

  2. Каким образом можно распаралелить процесс извлечения данных на несколько исполнителей (Vanilla подход).

  3. Как распаралелить процесс, но уже по-крупному. Переход от локальных баз данных к облачным.

  4. Архитектура получившейся облачной базы данных (Firebase Realtime Databasse).

  5. Оркестрирование процессов или как сделать так, чтобы всё работало параллельно и не сломалось.

  6. Вычисление активной аудитории профиля в Инстаграм, создание кластера активных пользователей и его уплотнение.

  7. Как я делал расписание процессов. Некоторая магия и танцы с бубном вокруг докера и crontab.

  8. Логи + облачная база данных.

  9. Полезные ссылки (API Instagram, прокси сервис, биржа аккаунтов инстаграм)

  10. Outro + Размышления о будущем проекта.

Если вдруг вы специалист в области инстаграмма, работаете с рекламой, то мне очень интересно услышать ваше мнение, какие именно данные из Инстаграма вам нужны и какое дальнейшее коммерческое развитие может быть у моего проекта.

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

Pepper.ninja

Я работал с ним, когда был новичком в таргете, и разобраться в устройстве не составило труда — оставил только приятные впечатления. А когда я поднаторел в таргете, то он обеспечил продвинутую настройку по подписчикам. Рекомендую, функций тут навалом:

  • Парсер id Инстаграм.
  • Фильтр людей по интересам.
  • Выборка по полу, возрасту и семейному положению.
  • Находит «тёплых» подписчиков по месту работы и учёбы.
  • Перенос аудитории из ВК в Instagram.
  • Поиск по геотегам.

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

Стоимость от 490 рублей в месяц.

Перейти в Pepper.ninja

Что ещё я использовал в проекте, полезные ссылки

Неофициальное API инстаграмма

В своей прошлой статье я использовал instabot, однако сейчас этот сервис уже не подерживаетя. Поэтому нынешний парсер базируется на instagrapi — мощный и надёжный сервис, рекомендасьон.

Проблемка с нынешней версией сервиса

На момент написания статьи у данная библиотека имеет версию 1.9.13. В данной версии кроется коварная ошибка, которая, впрочем, достаточно просто чинится.

Кто-то просто забыл убрать строчку в 43й строке. Просто убираем скобочку и всё работает.

Прокси

Уплотнение кластера пользователей

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

Изначальную базу пользователей я решил брать с университетских кластеров пользователей. Делал я это следующим образом (да, я люблю списки).

  1. Я брал несколько самых популярных университетских аккаунтов в инстаграме.

  2. Для каждого аккаунта получал идентификаторы последних 20 постов.

  3. Выкачивал все лайки для этих постов.

  4. Для каждого пользователя, поставившего лайк считал суммарное количество лайков, которое он поставил на эти 20 постов.

  5. Добавлял в свою базу пользователей тех, кто поставил N > 4 лайков (варьируемый параметр, я экспериментировал).

Интересный инсайт: Как оказалось, студенты МФТИ не так охотно ставят лайки друг другу в инстаграме, поэтому мой итоговый кластер состоял из студентов МГУ и ВШЭ (привет паблик hsemem).

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

manager — процесс для менеджмента системы.

Алгоритм работы следующий:

  • Устанавливается блок работы всех исполнителей + ожидание в 80 секунд, чтобы все процессы успели заблокироваться. (если блок уже установлен — то происходит ожидание)

  • Загрузка всей базы данных пользователей и базы данных постов

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

  • Сбор всех лайков, поставленных внутри базы данных. Загрузка всех лайков в облачную базу данных

  • Перераспределение диапазонов индексов пользователей между исполнителями (normalize_executors_split)

  • Балансировка оркестрирования (choose_top_users_to_fetch)

  • Сохранение всех баз данных локально

  • Сброс блока

MANAGER_RUN_EVERY_N_HOURS — частота запуска процесса менеджера в часах (я старался выносить все параметры в облачную базу данных, чтобы их можно было менять через веб интерфейс БД)

manage_cluster — процесс уплотнения или расширения кластера (в зависимости от параметров)

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

В облачной базе даных в разделе executors/cluster есть два параметра, влияющих на процесс формирования кластера.

  • REMAIN_FRACTION — доля пользователей, которые остаются после такой «чистки» (доля от текущего размера базы данных пользователей

  • ADD_FRACTION доля пользователей, которые добавляются (доля от текущего размера базы данных пользователей

Алгоритм работы процесса следующий:

  • Устанавливается блок работы всех исполнителей + ожидание в 80 секунд, чтобы все процессы успели заблокироваться. (если блок уже установлен — то происходит ожидание 10 минут).

  • Загрузка всей базы данных пользователей и базы данных постов.

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

  • Пользователи сортируются по количеству лайков, поставленных внутри базы данных. Затем оставляется доля самых активных пользователей (от нынешнего количества пользователей внутри базы даных), равная REMAIN_FRACTION (число от 0 до 1).

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

  • Эти пользователи также сортируются по количеству поставленных ими лайков. После чего в базу данных добавляется доля пользователей равная ADD_FRACTION (имеется ввиду доля от нынешнего количества пользователей внутри базы даных).

  • Происходит обновление коллекции all_likes.

  • Затем запускается перераспределение диапазонов индексов пользователей между исполнителями (normalize_executors_split).

  • Сброс блока.

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

Бесплатный анализ ЦА в Инстаграм

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

Adblock
detector