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

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

Если для вашей работы вам было нужно собирать данные с корпоративных профилей Инстаграм, вы наверняка использовали для этого мобильное приложение, поскольку в веб версии корпоративные данные отсутствовали. В частности, было невозможно определить корпоративный это профиль или персональный. Теперь появилась возможность обрабатывать их автоматически парсером, использующим мобильное API. Мы нашли его на просторах интернета, один из наших пользователей написал его и поделился с общественностью на одном из известных маркетинговых интернет ресурсах. Давайте разберем, как этот парсер работает.

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

Как вы уже наверное знаете, секция config предназначена для предустановки парсера, в данном случае для установки уровня режима отладки (который в принципе нужен только для разработки и его можно было бы опустить) и имени браузера от лица которого парсер будет отправлять запросы на сервер. Технически здесь мог бы быть Chrome или Safari, но автор решил что должен быть Firefox. К слову сказать, иногда сервера могут отдавать разные данные, в зависимости от выставленного имени браузера. Также, иногда может потребоваться использовать не пресет, а полную строку User-Agent, их можно найти тут.

Основной логический блок парсера находится в секции do. В самом начале происходит инициализация переменных вашим логином, паролем для аккаунта инстаграм и списком аккаунтов:

Далее парсер загружает домашнюю страницу Инстаграм и проходит в в тег body

Парсит весь текст и извлекает объект Javascript, транслирует его в XML и превращает в DOM блок, переходя в его контекст.

Сейчас в нашем контексте находится извлеченный объект Javascript (JSON) как DOM и мы можем ходить по его элементам, как если бы это была обычная HTML страница. Поэтому мы находим ноду config а в ней ноду csrf_token, парсим содержимое и извлекаем токен, который нам нужен для логина в инстаграм и записываем его в переменную token. После чего логинимся в Инстаграм, используя токен, логин и пароль, которые мы храним в переменных:

Далее парсер проверяет, авторизовал ли нас Инстаграм

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

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

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

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

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

Мобильный API возвращает ответ в JSON. Диггернаут автоматически конвертирует его в XML и даем возможность работать вам с DOM структурой, используя стандартную команду find. Так что весь дальнейший код просто забирает данные используя определенные CSS селекторы и сохраняет их в структуру данных.

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

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

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