CoderCastrov logo
CoderCastrov
Инстаграм

Парсинг профилей Instagram и постов самым эффективным способом без использования FB Graph API

Парсинг профилей Instagram и постов самым эффективным способом без использования FB Graph API
просмотров
3 мин чтение
#Инстаграм

В этой статье мы рассмотрим, как можно получить данные профилей и постов Instagram без необходимости использовать FB Graph API. Прежде чем мы начнем, позвольте мне ясно сказать, что эта техника работает только с открытыми аккаунтами.

Прежде чем мы начнем, позвольте мне дать вам контекст проблемы, которая привела к этому решению. Я работал над созданием платформы, которая могла бы легко использовать влиятельных пользователей Instagram для связи с брендами для оплачиваемой рекламы. Нам нужна была база данных влиятельных пользователей. Сначала мы подумали о запуске скрипта Selenium для парсинга данных с веб-сайта Instagram, но позже поняли, что это занимает много времени и ресурсов. Затем мы подумали о использовании FB Graph API, но для этого нам потребовалось бы пройти процесс проверки приложения и проверки бизнеса, что было невозможно в данный момент. Поэтому нам нужно было найти эффективный и недорогой способ для парсинга профилей Instagram. Мы много искали в интернете, изучали API веб-сайта Instagram и, наконец, нашли способ сделать это, о котором и будет рассказано в этой статье.

Итак, то, что мы собираемся сделать здесь, это вызвать некоторые API Instagram, которые открыты для всех и не требуют токена или аутентификации. Таким образом, это похоже на просмотр профиля, но вместо красивого отображения вы получаете данные в формате JSON.

Я разделю эту статью на три раздела.

Получение данных профиля

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

_https://www.instagram.com/<имя_пользователя_здесь>/?__a=1_

Вы получите ответ, похожий на показанный ниже.

JSON форматированный профиль Instagram

Ищите edge_owner_to_timeline_media для данных, связанных с постами. Здесь вы получите только максимум 12 последних постов. Ниже приведен фрагмент всех данных, которые вы получите для поста Instagram.

Информация о посте внутри edge_owner_to_timeline_media.edges

Получение данных о постах

Вышеуказанный API позволяет получить 12 последних постов, но если вам нужно больше 12 или все посты, то это становится сложнее, потому что получение постов пользователя требует больше, чем просто замена имени пользователя.

Мне пришлось немного изучить API основного веб-сайта Instagram и то, как он получает посты. Но я разобрался.

Отправьте запрос к API профиля (о котором мы только что говорили). Найдите ключ “id” внутри “user” и ключ “end_cursor” внутри “edge_owner_to_timeline_media.page_info”.

Предположим, что значение “has_next_page” равно True. Затем скопируйте значение “end_cursor” и замените его значением end_cursor_here в URL ниже без завершающих “==”. Также замените instagram_account_id_here на идентификатор пользователя (в моем случае это 7370820917).

https://www.instagram.com/graphql/query/?query_hash=58b6785bea111c67129decbe6a448951&variables=%7B%22id%22%3A%22<instagram_account_id_here>%22%2C%22first%22%3A50%2C%22after%22%3A%22<end_cursor_here>%3D%3D%22%7D

И ваш API должен выглядеть так.

https://www.instagram.com/graphql/query/?query_hash=58b6785bea111c67129decbe6a448951&variables=%7B%22id%22%3A%227370820917%22%2C%22first%22%3A50%2C%22after%22%3A%22QVFDVzJXS19YVTJfNlBIdVVmYmU5dzNSVFFSMFRxc09aRzFJcmdqWHkwUWpFSFlOQUlmWmxzMjJPcUNmeWRxbDNrQW03NlM5SG9LR1B6ZlpEcC0tZGU3dw%3D%3D%22%7D

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

информация о постах с максимум 50 постами и информацией о странице

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

Один пост

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