AdsPower
AdsPower

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

By AdsPower||1,691 Views

З поверхнею1,3 мільярда користувачів, Instagram – це золота жила цінних даних для бізнесу, які можна використовувати для дослідження ринку, генерування лідів та моніторингу ефективності. Але найскладніша частина – це збирання даних з Instagram.

Процедура не є простою та має багато складнощів, пов'язаних або з політикою Instagram, або з технічними неоднозначностями.

Цей посібник відповідає на питання, як парсити Instagram, представляючи три способи, що включають методи з низьким та високим навантаженням на код, а також метод без коду.

Чи є парсинг Instagram законним?

Відповідь на запитання «Чи законно збирати дані з Instagram?» – це і так, і ні, водночас, оскільки все зводиться до типу даних, які ви збираєте. Якщо ви хочете збирати дані з Instagram, доступні для загальнодоступних джерел, відповідь – так.

Але якщо ви збираєте з Instagram приватні дані, які потребують входу в Instagram, то це явно заборонено, і вам може загрожувати призупинення облікового запису, а в найгірших випадках – судові дії. Але навіть для публічних даних ви повинні забезпечити законний метод збору даних.

Щоб зібрати легальні дані з Instagram, ви можете використовувати API, що надаються Instagram. До них належать Instagram Graph API та Instagram Basic Display API.

API Graph дозволяє вам керувати та витягувати дані про бізнес-акаунти та облікові записи авторів. Тоді як API Basic Display надає вам доступ лише для читання до основної інформації користувача. Обидва ці API дотримуються політики Instagram щодо парсингу, тому парсинг Instagram за їх використанням є повністю законним.

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

Тож, перш ніж почати парсити Instagram, зробіть крок назад і подумайте: «Чи дозволяє Instagram парсити?» і переконайтеся, що ви обережно працюєте.

Які дані Instagram можна легко зібрати?

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

  • Хештеги: Ви можете отримати найпопулярніші або нещодавні фотографії та відео, позначені певним хештегом у підписі.

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

  • Дописи: Ви можете отримати такі показники, як кількість коментарів, кількість лайків, ідентифікатор профілю, дата публікації та URL-адреса.

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

Ось три способи парсингу Instagram. Виберіть той, який відповідає вашим потребам та ресурсам:

Скрейпінг Instagram за допомогою API Instagram

Ось покрокова інструкція про те, як скрейпувати Instagram, але спочатку переконайтеся, що ви виконуєте такі вимоги:

  • Обліковий запис компанії/творця в Instagram

  • Сторінка у Facebook, пов’язана з обліковим записом компанії/творця в Instagram

  • Обліковий запис розробника Facebook для використання API Instagram Graph

  • Зареєстрований додаток Facebook з мінімальними налаштуваннями

Після того, як ви закінчите з цими передумовами, наступні етапи виглядатимуть ось так.

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

Перейдіть на панель інструментів вашого додатка Facebook і натисніть кнопку «Продукт+» на панелі ліворуч у вікні. Звідти додайте продукт для входу у Facebook. Наразі не змінюйте налаштування для цього продукту та залиште їх за замовчуванням.

Далі вам доведеться реалізувати вхід у Facebook у вашому додатку за допомогою Документація щодо входу у Facebook та переконайтеся, що ваша процедура входу вимагає цих двох основних дозволів:

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

[Джерело зображення]

Згенерувати токен доступу:

Виконання дій з панелі керування застосунком в обліковому записі Instagram вимагає токена доступу користувача. У правій частині сторінки панелі керування відкрийте Користувач або Сторінка та виберіть "Отримати токен доступу користувача".

З’явиться спливаюче вікно з інформацією про те, що програма (у цьому випадку ваша програма) запитує вищезгадані дозволи. Просто натисніть кнопку «Продовжити» або «ОК», і ви отримаєте токен доступу користувача в полі «Маркер доступу» на вашій інформаційній панелі.


Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

[Джерело зображення]

Тепер, використовуючи токен доступу користувача, ми виконаємо кілька основних запитів до облікового запису Instagram.

1. Отримати ідентифікатор сторінки Facebook:

Спочатку нам потрібен ідентифікатор сторінки у Facebook, пов'язаної з бізнес-акаунтом в Instagram. Для цього виконайте наступний запит Get на панелі інструментів.

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


Це поверне ім'я та ідентифікатор сторінок Facebook, що належать користувачеві Facebook. Результат виглядатиме ось так.

{
"дані": [
{
"access_token": "EAAJjmJ...",
"категорія": "Сторінка програми",
"список_категорій": [
{
"id": "2301",
"назва": "Сторінка програми"

],
"назва": "Метриксаурус",
"id": "134895793791914",
"завдання": [
"АНАЛІЗУВАТИ",
"РЕКЛАМА",
"ПОМІРНИЙ",
"СТВОРИТИ_ЗМІСТ",
"КЕРУВАННЯ"
]

]


Скопіюйте ідентифікатор сторінки, пов'язаної з бізнес-акаунтом в Instagram.

2. Отримайте ідентифікатор бізнес-акаунта в Instagram:

Використовуючи ідентифікатор Facebook, введіть наступний скрипт у командний рядок і натисніть «Надіслати».

134895793791914?поля=instagram_business_account


Ви отримаєте наступний результат.

{
"instagram_business_account": {
"id": "17841405822304914" // Підключений ID користувача IG
},
"id": "134895793791914" // Ідентифікатор сторінки у Facebook


3. Отримайте медіаоб'єкти облікового запису Instagram:

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

17841405822304914/історії


Вивід міститиме ідентифікатор для кожної історії.

{
"дані": [
{
"id": "17918195224117851"
},
{
"id": "17895695668004550"
},
{
"id": "17899305451014820"
},
{
"id": "17896450804038745"
},
{
"id": "17881042411086627"
},
{
"id": "17869102915168123"

]


Це був лише один приклад. Використовуючи Instagram Graph API, ви також можете отримати іншу інформацію, таку як метадані користувачів Instagram, та виконати дослідження хештегів.

Тепер перейдемо до іншого способу парсингу даних з Instagram.

Парсинг Instagram без використання Cloud Scrapper

Для тих, хто не має досвіду програмування, вищезазначений метод може бути складним для розуміння, не кажучи вже про його виконання. Але не хвилюйтеся. Є скрепери Instagram, які виконують роботу без необхідності написання будь-якого коду.

Ось як парсити Instagram за допомогою одного з цих інструментів під назвою Apify.

Перейдіть на сторінку скрепера Apify в Instagram:

Відкрийте сторінку скрепера Apify в Instagram та натисніть Спробувати безкоштовно.


Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

Зареєструйтесь на Apify, використовуючи свою адресу електронної пошти або облікові записи Google чи Github. Це переведе вас до консолі Apify, де відбувається справжній парсинг Instagram.

Зберіть цільові URL-адреси Instagram:

Використовуючи додаток Instagram або веб-сайт, зберіть усі URL-адреси профілів облікових записів Instagram, які ви хочете скопіювати. У консолі Apify вставте всі ці URL-адреси у надані поля введення по одній. Щоб ввести їх усі одночасно, ви можете натиснути кнопку «Масове редагування».

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

Apify пропонує три варіанти парсингу для наданих URL-адрес, ви можете парсити публікації та коментарі або отримувати різні деталі з профілів.

Натисніть «Зберегти» та «Пуск»:

Залиште решту налаштувань без змін та натисніть «Зберегти» та «Пуск», щоб запустити парсер. Результат буде у вигляді таблиці, що містить рядки, що дорівнюють кількості URL-адрес профілів, які ви надали, з кількома стовпцями, що містять метадані профілю, такі як біографія, кількість підписників, кількість публікацій, кількість стрічок, ідентифікатор облікового запису та статус підтвердження, і це лише деякі з них.

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

Збереження Результати:

Тепер натисніть кнопку «Експортувати результати» та виберіть потрібний формат файлу у спливаючому вікні. Ви також можете очистити дані, вибравши або пропустивши поля, які вам не потрібні. Після цього ви можете завантажити результати, переглянути їх у новій вкладці або поділитися ними за посиланням.

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

Вилучення даних з Instagram за допомогою мови програмування

Створення власного скрепера для Instagram може бути найефективнішим рішенням, якщо ваші вимоги нетипові та ви маєте ґрунтовні знання програмування або маєте розробника у своїй команді. Ви можете зробити це, використовуючи будь-яку мову програмування в поєднанні з фреймворком для веб-скрейпінгу.

У цьому посібнику показано, як парсити Instagram за допомогою Python та Selenium, фреймворку для автоматизації браузера.

Імпорт основних бібліотек:

Для початку імпортуйте основні бібліотеки, включаючи Selenium, його веб-драйвер та Selenium-Stealth, щоб запобігти виявленню.

зseleniumімпорт webdriver
з selenium.webdriver.common.byімпорт Від
з pprint імпорт pprint
імпорт json
зselenium_stealthimportstealth


Бібліотека pprint допоможе нам акуратно роздрукувати вивід для покращення читабельності.

Збирати імена користувачів Instagram:

Створіть список та додайте імена користувачів профілів Instagram, на які ви орієнтуєтесь.

імена користувачів=["natureismetal","miteuniversity", "samstailor", "therock"]
проксі="сервер:порт"
вихід={{/span>


Вихідна змінна – це словник, який ми використовуватимемо для зберігання результатів.

Визначте основну функцію:

Функція main буде проходити список імен користувачів по одному за раз та викликати функцію scrape для кожного імені користувача.

def main():
для ім'я користувача в імена користувачів:
ім'я_користувача)


Визначте функцію для керування налаштуваннями браузера:

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

def prepare_browser():
chrome_options=webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy')
chrome_options.add_argument("почати розгортання")
chrome_options.add_experimental_option("виключити перемикачі", ["увімкнути автоматизацію"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver=webdriver.Chrome(options=chrome_options)
stealth(драйвер,
user_agent= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, як Gecko) Chrome/83.0.4103.53 Safari/537.36',
["en-US", "en"],
vendor= "Google Inc.",
platform= "Win32",
webgl_vendor= "Intel Inc.",
renderer= "Двигун Intel Iris OpenGL",
fix_hairline=False,
run_on_insecure_origins=False,
)
returndriver


Визначте функцію для парсингу:

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

Ми також перевіримо статус запиту. Якщо ваш запит було перенаправлено на сторінку входу, це означає, що запит не вдалося виконати. Тоді як якщо Якщо рядок входу не було, запит був успішним, і результат буде проаналізовано як JSON та надіслано до функції parse_data() разом з іменем користувача.

def scrape(ім'я користувача):


url = f'https://instagram.com/{username/?__a=1&__d=dis'
chrome= prepare_browser()
chrome.get(url)
print(f"Спроба:{chrome.current_url")


if "вхід" in chrome.current_url:
print("Не вдалося/перенаправити вхід")
chrome.quit()

else:
print ("Успіх")
resp_body=chrome.find_element(By.TAG_NAME, "body").text
data_json= json.loads(resp_body)
user_data= data_json['graphql']['користувач']
(ім'я користувача, user_data)
chrome.quit()


Визначте функцію parse_data():

Ця функція аналізує дані JSON в аргументі user_data, щоб отримати потрібне поле даних. У цьому прикладі ми збираємо повне ім'я користувача, категорію облікового запису, кількість підписників та підписи до публікацій.

def parse_data(ім'я користувача, дані_користувача):
captions= []


якщо len(user_data['edge_owner_to_timeline_media']['краї']) > 0:
длявузла вдані_користувача['edge_owner_to_timeline_media']['краї']:
if len(вузол['вузол']['edge_media_to_caption']['краї']) > 0:
Якщо вузол['вузол']['edge_media_to_caption']['краї'][0]['вузол']['текст']:
captions.append(

вузол['вузол']['edge_media_to_caption']['краї'][0]['вузол']['текст'])

output[ім'я користувача]={
'ім'я': дані_користувача['повне_ім'я'],
'категорія': дані_користувача['category_name'],
'followers': user_data['edge_followed_by']['count'],
'повідомлення': підписи,


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

Код драйвера запускає процес вилучення даних, витягує їх у вихідну змінну та викликає функцію pprint() для її гарного відображення.

if__name__=='__main__':

вивід)


Обхід виявлення за допомогою AdsPower Antidetect у браузері

Instagram суворо ставиться до парсингу та надає дуже обмежений доступ до публічних даних на своїй платформі. Це включає інформацію базового рівня, таку як ідентифікатор профілю, кількість підписників, лайки та коментарі. Глибше дослідження вимагає входу, що суперечить політиці Instagram та може призвести до блокування облікового запису.

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

Тож наступного разу, коли ви будете парсити Instagram за допомогою інструменту без коду або неофіційних API Instagram, обов’язково використовуйте AdsPowerantidetect у браузері, щоб обійти виявлення.

Висновок

Instagram дозволяє парсити лише публічно доступні дані на своїй платформі, для яких він надає два API. Але ці API пропонують дуже базовий рівень парсити, не дозволяючи вам парсити дані з Instagram, які насправді є релевантними.

Це залишає нам сторонні веб-скрапери або створення власного скрепера за допомогою мов програмування. Однак, парсинг Instagram за допомогою цих неофіційних методів має шанси на виявлення, тому переконайтеся, що ви використовуєте AdsPower antidetect у браузері для додаткового захисту.

AdsPower

Найкращий веб-переглядач із можливістю входу в систему для будь-якої галузі

Як парсити Instagram? 3 способи отримати максимум від ваших зусиль зі парсингу

Люди також читають