AdsPower
AdsPower

Как парсить в Instagram? 3 способа получить максимальный результат

By AdsPower
4,535 Views

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

Процесс имеет множество сложностей, возникающих из-за политики Instagram или технических непоняток.

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

Законен ли парсинг Instagram?

Ответ на вопрос "Является ли сбор данных с Instagram законным?" является как да, так и нет, и это зависит от типа данных, которые вы собираете. Если вы хотите собирать данные из Instagram, которые доступные публично, то ответ - да.
Но если вы собираете данные из Instagram, которые требуют авторизации в учетную запись Instagram, то это явно запрещено, и вы можете столкнуться с блокировкой аккаунта и в худшем случае - с юридическими последствиями. Но даже для общедоступных данных вам следует обеспечить легитимный способ парсинга.

Для сбора данных с Instagram легальным образом можно использовать API, который предоставляет Instagram. К ним относятся API-интерфейс Graph Instagram и API-интерфейс Basic Display Instagram.

API-интерфейс Graph позволяет управлять и извлекать данные о бизнес-аккаунтах и аккаунтах создателей. А API-интерфейс Basic Display дает вам только доступ для чтения к основной информации пользователей. Оба этих API соответствуют политике Instagram относительно сбора данных, поэтому использование их для парсинга в Instagram является абсолютно законным.

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

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

Какие данные Instagram вы можете легко получить?

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

  • Хэштеги: Вы можете получить самые популярные или недавно опубликованные фотографии и видео, помеченные определенным хэштегом в подписи.

  • Профили: Вы можете получить данные профиля, такие как публикации, количество лайков и количество подписчиков/подписок.

  • Посты:Вы можете получить количество комментариев, количество лайков, идентификатор профиля, дата публикации и URL-адрес.

3 способа парсинга Instagram

Вот три способа парсинга Instagram. Выберите тот, который соответствует вашим потребностям и возможностям:


Парсинг Instagram с использованием Instagram API

Вот пошаговое руководство о том, как парсить Instagram, но сначала убедитесь, что вы выполнили следующие требования:

  • Бизнес-аккаунт Instagram/аккаунт автора

  • Страница Facebook, связанная с учетной записью Instagram Business/Creator

  • Аккаунт разработчика Facebook для использования API Instagram Graph

  • Зарегистрированное приложения Facebook с минимальными настройками.


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

Добавьте функцию входа в Facebook:

Перейдите на панель управления вашего приложения Facebook и нажмите кнопку «Продукт +» на панели в левой части окна. Оттуда добавьте продукт для входа в Facebook. На данный момент не меняйте настройки этого продукта и оставьте их по умолчанию.

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


Как парсить в Instagram?  3 способа получить максимальный результат

[Источник_изображения]


Создайте токен доступа:

Для выполнения действий с панели приложения на аккаунте Instagram требуется токен доступа пользователя. В правой части страницы панели управления откройте выпадающий список Пользователь или Страница и выберите Получить токен доступа пользователя.

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

Как парсить в Instagram?  3 способа получить максимальный результат

[Источник_изображения]


Теперь, используя токен доступа пользователя, мы выполним несколько основных запросов к аккаунту Instagram.

1. Get Facebook Page ID:

Во-первых, нам нужен ID страницы Facebook, связанный с аккаунтом Instagram Business. Для этого выполните следующий запрос Get на панели мониторинга.

"https://graph.facebook.com/v19.0/me/accounts?access_token={access-token}"

Это вернет имя и идентификаторы страниц Facebook, принадлежащих пользователю Facebook. Результат будет выглядеть следующим образом.

{
"data": [
{
"access_token": "EAAJjmJ...",
"category": "App Page",
"category_list": [
{
"id": "2301",
"name": "App Page"
}
],
"name": "Metricsaurus",
"id": "134895793791914",
"tasks": [
"ANALYZE",
"ADVERTISE",
"MODERATE",
"CREATE_CONTENT",
"MANAGE"
]
}
]
}

Скопируйте ID страницы, подключенной к бизнес-аккаунту Instagram.

2. Получите ID бизнес-аккаунта Instagram:

Используя ID от Facebook, введите следующий скрипт в командной строке и нажмите «Отправить».

134895793791914?fields=instagram_business_account

Вы получите следующий результат.

{
"instagram_business_account": {
"id": "17841405822304914" // Connected IG User ID
},
"id": "134895793791914" // Facebook Page ID
}


3. Получите медиа-объекты аккаунта Instagram:

Скопируйте ID Instagram из выходных данных и выполните следующий скрипт, чтобы получить идентификаторы всех историй, опубликованных в настоящее время в бизнес-аккаунте Instagram.

17841405822304914/stories

Результат будет содержать идентификатор для каждой истории.

{
"data": [
{
"id": "17918195224117851"
},
{
"id": "17895695668004550"
},
{
"id": "17899305451014820"
},
{
"id": "17896450804038745"
},
{
"id": "17881042411086627"
},
{
"id": "17869102915168123"
}
]
}

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

Теперь давайте перейдем к другому способу.

Парсинг Instagram с помощью Cloud Scrapper

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

Парсинг также можно выполнить с использованием инструмента под названием
Apify.


Перейдите на страницу парсера Apify:

Посетите страницу Apify Instagram Scraper и нажмите кнопку «Попробовать бесплатно».

Как парсить в Instagram?  3 способа получить максимальный результат

Зарегистрируйтесь в Apify, используя адрес электронной почты или аккаунт Google или Github. Вы попадете в консоль управления Apify, где происходит парсинг Instagram.


Соберите целевые URL-адреса Instagram:

Используя приложение или сайт Instagram, соберите все URL-адреса профилей Instagram, которые вы хотите спарсить. В консоли Apify вставьте все эти URL-адреса в указанные поля ввода по очереди. Чтобы внести их все сразу, можете использовать кнопку «Массовое редактирование».

Как парсить в Instagram?  3 способа получить максимальный результат

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

Нажмите “Сохранить и запустить”:

Оставьте остальные настройки без изменений и нажмите "Сохранить и запустить", чтобы запустить парсер. Результатом будет таблица, содержащая количество строк, равное количеству URL-адресов профилей, которые вы предоставили, а также несколько столбцов с метаданными профиля, такими как биография, количество подписчиков, количество публикаций, количество рилов, ID аккаунта и статус верификации, чтобы упомянуть лишь некоторые из них.

Как парсить в Instagram?  3 способа получить максимальный результат

Соберите результаты:

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

Как парсить в Instagram?  3 способа получить максимальный результат

Парсинг Instagram с помощью языков программирования

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

Это руководство покажет, как выполнить парсинг в Instagram с использованием Python и Selenium, фреймворка автоматизации браузера.


Импорт основных библиотек:

Для начала импортируйте базовые библиотеки: Selenium, его веб-драйвер и Selenium-Stealth, чтобы предотвратить идентификацию.

from selenium import webdriver
from selenium.webdriver.common.by import By
from pprint import pprint
import json
from selenium_stealth import stealth

Библиотека pprint поможет нам аккуратно распечатать результат и повысить его читабельность.


Составьте список профилей Instagram:

Составьте список и добавьте никнеймы профилей Instagram, на которые вы ориентируетесь.

usernames = ["natureismetal", "miteuniversity", "samstailor", "therock"]
proxy = "server:port"
output = {}

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

Определим основную функцию:

Главная функция будет последовательно обходить список пользователей и вызывать функцию "scrape" для каждого пользователя.

def main():
for username in usernames:
scrape(username)


Определите функцию для управления настройками браузера:

Эта функция будет настраивать параметры браузера перед каждым запросом на парсинг, чтобы добавить анонимности и избежать обнаружения со стороны Instagram. Эти изменения включают в себя ротацию прокси, настройку параметров Selenium-Stealth и создание искусственного юзер агента.

def prepare_browser():
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
chrome_options.add_argument("start-maximized")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options= chrome_options)
stealth(driver,
user_agent= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36',
languages= ["en-US", "en"],
vendor= "Google Inc.",
platform= "Win32",
webgl_vendor= "Intel Inc.",
renderer= "Intel Iris OpenGL Engine",
fix_hairline= False,
run_on_insecure_origins= False,
)
return driver



Определите функцию для парсинга:

Функция scrape(), вызванная в главной, принимает в качестве аргумента единственное имя пользователя Instagram и создает конечную точку профиля, которую мы будем использовать для отправки запроса через браузер Chrome с помощью функции preparebrowser().

Мы также будем проверять статус запроса. Если ваш запрос был перенаправлен на страницу входа в систему, это означает, что запрос не удался. Если же строка для входа отсутствует, запрос был успешным, и результат будет разобран в формате JSON и отправлен в функцию prepare_browser() function вместе с именем пользователя.

def scrape(username):


url = f'https://instagram.com/{username}/?__a=1&__d=dis'
chrome = prepare_browser()
chrome.get(url)
print (f"Attempting: {chrome.current_url}")


if "login" in chrome.current_url:
print ("Failed/ redir to login")
chrome.quit()

else:
print ("Success")
resp_body = chrome.find_element(By.TAG_NAME, "body").text
data_json = json.loads(resp_body)
user_data = data_json['graphql']['user']
parse_data(username, user_data)
chrome.quit()


Определите функцию parse_data():

Эта функция анализирует данные в формате JSON, переданные в аргументе userdata, чтобы получить необходимые поля данных. В данном примере, мы извлекаем полное имя пользователя, категорию аккаунта, количество подписчиков и заголовки постов.

def parse_data(username, user_data):
captions = []


if len(user_data['edge_owner_to_timeline_media']['edges']) > 0:
for node in user_data['edge_owner_to_timeline_media']['edges']:
if len(node['node']['edge_media_to_caption']['edges']) > 0:
If node['node']['edge_media_to_caption']['edges'][0]['node']['text']:
captions.append(

node['node']['edge_media_to_caption']['edges'][0]['node']['text'])

output[username] = {
'name': user_data['full_name'],
'category': user_data['category_name'],
'followers': user_data['edge_followed_by']['count'],
'posts': captions,

}


Напишите код драйвера:

The driver code начинает процесс парсинга, извлекает данные в переменную output и вызывает функцию pprint() для красивого отображения результатов.

if __name__ == '__main__':
main()
pprint(output)


Обход обнаружения с помощью антидетект браузера AdsPower

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

Здесь на помощь приходит
AdsPower, помогая вам сохранить анонимность профиля при парсинге данных с Инстаграм. AdsPower использует антидетект-техники, такие как ротацию IP-адресов и ограничение скорости, чтобы избежать защитных мер против парсинга.




Так что в следующий раз, когда вы займетесь парсингом в Инстаграм, используя no-code-инструменты или неофициальные API, попробуйте использовать браузер
AdsPower для обхода обнаружения.


Итоги

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

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

AdsPower

Лучший браузер с несколькими входами для любой отрасли

Как парсить в Instagram?  3 способа получить максимальный результат