Instagram, o platformă socială de renume mondial, se bucură de o audiență impresionantă, depășind 1,2 miliarde de utilizatori în 2021, ceea ce reprezintă aproximativ 28% din totalul utilizatorilor de internet, conform statisticilor furnizate de Statista.
Acest articol servește drept ghid practic pentru extragerea datelor Instagram dintr-un profil, folosind limbajul de programare Python prin două metode distincte. Prima metodă implică descărcarea conținutului media cu ajutorul bibliotecii Installoader. A doua metodă se concentrează pe crearea unui script Python personalizat pentru a obține date JSON detaliate despre profilul vizat.
Este esențial de menționat că extragerea datelor poate constitui o încălcare a termenilor și condițiilor impuse de Instagram. Prin urmare, vă recomandăm să descărcați date numai din contul dumneavoastră personal.
Utilizarea Installoader
Instaloader este un instrument Python conceput special pentru a facilita descărcarea conținutului media de pe Instagram. Se remarcă prin simplitatea utilizării și eficiența sa în extragerea rapidă și facilă a datelor. Pentru a începe utilizarea Installoader, este necesară mai întâi instalarea sa prin intermediul pip:
pip install instaloader
Odată finalizată instalarea, puteți utiliza Installoader fie prin interfața sa de linie de comandă, fie ca un modul integrat într-un script Python.
Pentru a-l utiliza din linia de comandă, introduceți comanda „instaloader”. De exemplu, pentru a afișa informații despre utilizarea sa, introduceți următoarea comandă în terminal:
instaloader --help
Pentru a descărca imaginea de profil a unui utilizator, specificați comanda împreună cu opțiunea „–profile”, urmată de numele de utilizator. Exemplu:
instaloader --profile <NUMELE DE UTILIZATOR AL PROFILULUI>
Totuși, pentru ca această comandă să funcționeze, trebuie să vă autentificați mai întâi. Pentru a face acest lucru, utilizați opțiunea de conectare astfel:
instaloader --login <NUMELE DUMNEAVOASTRĂ DE UTILIZATOR> --profile <NUMELE DE UTILIZATOR AL PROFILULUI>
Ce se poate descărca?
Cu ajutorul Installoader, aveți posibilitatea de a descărca o gamă variată de conținut media. Următorul extras din pagina de manual ilustrează diversele tipuri de conținut ce pot fi descărcate:
profile Descarcă profilul. Dacă un profil deja descărcat a fost redenumit, Instaloader îl va găsi automat după ID-ul unic și va redenumi folderul în consecință. @profile Descarcă toți utilizatorii urmăriți de profil. Necesită --login. Luați în considerare utilizarea :feed în locul @yourself. "#hashtag" Descarcă #hashtag. %location_id Descarcă %location_id. Necesită --login. :feed Descarcă imaginile din fluxul tău. Necesită --login. :stories Descarcă story-urile urmăritorilor tăi. Necesită --login. :saved Descarcă postările pe care le-ai salvat. Necesită --login. -- -shortcode Descarcă postarea cu shortcode-ul specificat. filename.json[.xz] Redescarcă obiectul specificat. +args.txt Citește țintele (și opțiunile) dintr-un fișier text specificat.
Pentru a descărca postările unui anumit utilizator, trebuie să introduceți următoarea comandă:
instaloader --login <NUMELE DUMNEAVOASTRĂ DE UTILIZATOR> <NUMELE DE UTILIZATOR ȚINTĂ>
În acest caz, numele dumneavoastră de utilizator este cel al contului dumneavoastră autentificat de Instagram, iar numele de utilizator țintă este profilul ale cărui postări doriți să le descărcați.
Pentru a descărca postările urmăritorilor unui profil, trebuie să introduceți comanda:
instaloader --login <NUMELE DUMNEAVOASTRĂ DE UTILIZATOR> @<NUMELE DE UTILIZATOR ȚINTĂ>
Rețineți că diferența esențială între această comandă și cea anterioară este prezența simbolului @ înainte de numele de utilizator țintă.
Alternativ la utilizarea interfeței de linie de comandă a Installoader, puteți utiliza biblioteca ca modul Python. Pachetul este documentat detaliat aici.
Installoader vă permite să descărcați diferite tipuri de conținut media. Cu toate acestea, dacă doriți să extrageți metadate, precum biografia unui utilizator, Installoader nu este suficient. Pentru această nevoie, veți utiliza metoda următoare, ce presupune crearea unui script Python pentru a extrage datele unui profil de utilizator.
Scrierea unui script Python pentru descărcarea datelor Instagram
Prezentare generală
În această secțiune, vom dezvolta un script Python simplu pentru a descărca date de pe Instagram. Această abordare se bazează pe utilizarea unui API JSON Instagram, mai puțin cunoscut, pentru a extrage date din profilurile publice.
Funcționalitatea acestui API este activată prin adăugarea interogării __a=1&__d=1
la finalul adresei URL a unui profil. Instagram va răspunde cu date JSON relevante profilului respectiv.
De exemplu, dacă numele de utilizator este „0xanesu”, o solicitare către https://instagram.com/0xanesu/?__a=1&__d=1
va genera un răspuns JSON cu datele profilului.
Crearea scriptului
Pentru a realiza solicitarea în Python, vom utiliza modulul requests
. Alternativ, puteți folosi pycURL
, urllib
sau orice altă bibliotecă client pe care o preferați pentru efectuarea solicitărilor HTTP. Pentru a începe, instalați modulul requests
prin pip:
pip install requests
Odată instalat, creați un fișier în care veți scrie scriptul și importați funcția get
din modulul requests
, precum și funcția loads
din modulul json
, aceasta din urmă fiind folosită pentru a analiza răspunsul JSON.
from requests import get from json import loads
După ce ați importat modulele necesare, creați o variabilă pentru a stoca adresa URL a profilului de Instagram vizat.
url="https://instagram.com/<NUMELE DUMNEAVOASTRĂ DE UTILIZATOR AICI>"
După cum s-a menționat anterior, pentru a extrage datele Instagram dintr-un profil, este necesar să adăugați parametrii de interogare __a=1
și __d=1
. Pentru a-i defini, vom crea un obiect dicționar care să conțină acești parametri.
params = { '__a': 1, '__d': 1 }
Pentru a autoriza cererile, Instagram solicită un ID de sesiune. Vă vom arăta ulterior cum să obțineți acest ID de sesiune. Pentru moment, introduceți o valoare temporară pe care o veți înlocui ulterior.
cookies = { 'sessionid': '<ID-UL DUMNEAVOASTRĂ DE SESIUNE AICI>' }
În continuare, definiți o funcție care va fi executată în cazul unei solicitări reușite:
def on_success(response): profile_data_json = response.text parsed_data = loads(profile_data_json) print('Numele complet al utilizatorului:', parsed_data['graphql']['user']['full_name']) print('Biografia utilizatorului:', parsed_data['graphql']['user']['biography'])
Această funcție primește obiectul răspuns, extrage datele JSON din corpul răspunsului, și apoi analizează JSON-ul într-un obiect. Ulterior, sunt extrase și afișate numele complet și biografia profilului.
Definiți o altă funcție care va fi executată în cazul unei erori:
def on_error(response): # Afișarea erorii în cazul unei probleme print('A apărut o problemă') print('Codul de eroare:', response.status_code) print('Motivul:', response.reason)
Apoi, apelăm funcția get
pentru a efectua cererea, trecând ca argumente URL-ul, parametrii și cookie-urile.
response = get(url, params, cookies=cookies)
În final, verificăm codul de stare al răspunsului. Dacă starea este 200, apelăm funcția on_success
. În caz contrar, apelăm funcția on_error
.
if response.status_code == 200: on_success(response) else: on_error(response)
În acest punct, am finalizat scrierea codului. Singurul pas rămas este obținerea ID-ului de sesiune. Pentru a obține ID-ul de sesiune, deschideți Google Chrome și accesați Instagram pe web. Asigurați-vă că sunteți conectat la contul dumneavoastră și apoi deschideți instrumentele de dezvoltare folosind combinația de taste Ctrl + Shift + I (Cmd + Shift + I pe macOS).
Cu instrumentele de dezvoltare deschise, accesați fila Aplicație.
Apoi, faceți clic pe submeniul Cookie-uri pentru a vizualiza cookie-urile utilizate de Instagram.
Ulterior, copiați valoarea cookie-ului „sessionid” din lista de cookie-uri afișată în panoul Instrumente de dezvoltare.
După ce ați copiat ID-ul sesiunii, inserați-l în script și executați-l. În cazul nostru, folosind „instagram” ca nume de utilizator (https://instagram.com/instagram/?__a=1&__d=1), acesta este rezultatul obținut:
Și astfel, am reușit să descărcăm datele de profil într-un mod dinamic. API-ul JSON returnează o cantitate mare de date suplimentare. Acesta este rezultatul afișării tuturor datelor returnate:
Iată cum puteți extrage date și postări de pe profilurile de Instagram.
Concluzii
În acest articol, am analizat metodele de descărcare a postărilor și a conținutului media folosind Installoader. Apoi, am creat un script personalizat pentru a extrage date JSON de profil, care includ mult mai multe informații decât simplul conținut media. Dacă acest proiect v-a captivat atenția, vă recomandăm să consultați articolul nostru despre utilizarea bibliotecii „Python Timeit” pentru a măsura performanța codului dumneavoastră.
În cazul în care doriți să îmbunătățiți experiența dumneavoastră pe Instagram, vă invităm să citiți recenzia detaliată a programului de descărcare Instagram, „Qoob Stories”.