03/28/2024

Cum să descărcați date Instagram folosind Python

Instagram este una dintre cele mai mari rețele de socializare din lume, cu aproximativ 1,21 miliarde de utilizatori în 2021, sau aproximativ 28% din internet, potrivit Statista.

Acest articol este un ghid despre cum să descărcați programatic datele Instagram dintr-un profil folosind Python în două metode. Prima metodă este descărcarea media utilizând Installoader. Al doilea este scrierea unui script Python simplu pentru a obține date JSON despre profil.

Este important să rețineți că răzuirea datelor poate încălca termenii și condițiile Instagram și vă recomandăm să descărcați date numai din contul dvs.

Folosind Installoader

Installoader este un pachet Python pentru descărcarea conținutului media Instagram. Este incredibil de ușor de utilizat și face extragerea și descărcarea datelor rapidă și ușoară. Pentru a începe să utilizați Installoader, mai întâi, instalați-l folosind pip:

pip install instaloader

Odată instalat, îl puteți utiliza din interfața sa de linie de comandă sau ca pachet într-un script Python.

Pentru a o utiliza din linia de comandă, utilizați comanda installoader. De exemplu, pentru a afișa informații de ajutor, introduceți următoarea comandă în terminal:

instaloader --help

Pentru a descărca fotografia de profil a unui utilizator, introduceți comanda cu o etichetă –profile, urmată de numele de utilizator. Ca astfel:

instaloader --profile <USERNAME OF THE PROFILE>

Dar pentru ca această comandă să funcționeze, trebuie să vă conectați mai întâi. Pentru a face acest lucru, introduceți opțiunea de conectare astfel:

instaloader --login <YOUR USERNAME> --profile <USERNAME OF THE PROFILE>

Ce să descărcați

Cu Installoader, puteți descărca diferite medii. Acest extras al paginii de manual vă arată toate lucrurile diferite pe care le puteți descărca:

  profile               Download profile. If an already-downloaded profile has been renamed, Instaloader automatically finds it by its unique
                        ID and renames the folder likewise.
  @profile              Download all followees of profile. Requires --login. Consider using :feed rather than @yourself.
  "#hashtag"            Download #hashtag.
  %location_id          Download %location_id. Requires --login.
  :feed                 Download pictures from your feed. Requires --login.
  :stories              Download the stories of your followees. Requires --login.
  :saved                Download the posts that you marked as saved. Requires --login.
  -- -shortcode         Download the post with the given shortcode
  filename.json[.xz]    Re-Download the given object.
  +args.txt             Read targets (and options) from given textfile.

Pentru a descărca postările unui anumit utilizator, ar trebui să introduceți comanda:

instaloader --login <YOUR USERNAME> <TARGET USERNAME>

În acest caz, numele dvs. de utilizator este numele de utilizator al contului dvs. de Instagram autentificat; numele de utilizator țintă este profilul ale cărui postări doriți să le descărcați.

  Cum să adaugi locație la Instagram Bio

Pentru a descărca postări de la adepții unui profil, ar trebui să introduceți comanda:

instaloader --login <YOUR USERNAME> @<TARGET USERNAME>

Rețineți că diferența dintre această comandă și cea de dinainte este @ înaintea numelui de utilizator țintă.

O alternativă la utilizarea interfeței de linie de comandă Installoader este să o folosești ca pachet Python. Pachetul este bine documentat aici.

Cu Installoader, puteți descărca diferite fișiere media. Cu toate acestea, dacă doriți să extrageți metadate, cum ar fi pagina bio a unui utilizator, Installoader singur nu ar fi suficient. Cu următoarea metodă, veți scrie un Script Python pentru a extrage datele unui profil de utilizator.

Scrierea unui script Python pentru a descărca datele Instagram

Prezentare generală

În această metodă, vom scrie un script simplu pentru a descărca datele Instagram în Python. Această metodă se bazează pe utilizarea unui API Instagram JSON relativ necunoscut pentru extragerea datelor din profilurile publice.

Modul în care funcționează acest API este dacă adăugați interogarea __a=1&__d=1 la sfârșitul adresei URL a profilului dvs., Instagram răspunde cu date JSON despre profil.

De exemplu, numele meu de utilizator este 0xanesu. Drept urmare, dacă fac o solicitare la https://instagram.com/instagram/?__a=1&__d=1, voi primi date JSON despre profilul meu ca răspuns.

Scrierea scenariului

Pentru a face cererea în Python, vom folosi modulul de solicitări Python. Cu toate acestea, puteți utiliza și pycURL, urllib sau orice altă bibliotecă client pe care preferați să o utilizați pentru a face solicitări HTTP. Pentru a începe, instalați modulul de solicitări folosind pip.

pip install requests

Odată ce a fost instalat, deschideți un fișier în care să vă scrieți scriptul și importați funcția get din modulul de solicitări. În plus, importați și funcția de încărcare din json. Acesta va fi folosit pentru a analiza răspunsul JSON.

from requests import get
from json import loads

După ce ați importat datele, creați o variabilă care stochează adresa URL la profilul dvs. Instagram.

url="https://instagram.com/<YOUR USERNAME HERE>"

După cum am menționat anterior, pentru a extrage datele Instagram dintr-un profil, trebuie să adăugați parametrii de interogare __a=1 și __d=1. Pentru a le defini, creăm un obiect dicționar cu parametrii.

params = { '__a': 1, '__d': 1 }

Pentru a autoriza solicitările pe care le facem, Instagram necesită un ID de sesiune. Mai târziu, vă voi arăta cum să obțineți ID-ul sesiunii. Pentru moment, puneți doar o valoare de substituent pe care o veți înlocui mai târziu.

cookies = { 'sessionid': '<YOUR SESSION ID HERE>' }

Apoi, definiți o funcție care va rula atunci când cererea va fi reușită.

def on_success(response):
    profile_data_json = response.text
    parsed_data = loads(profile_data_json)
    
    print('User fullname:', parsed_data['graphql']['user']['full_name'])
    print('User bio:', parsed_data['graphql']['user']['biography'])

Funcția pe care am definit-o va prelua obiectul răspuns, va extrage JSON din corpul răspunsului și apoi va analiza JSON într-un obiect. După aceasta, extrag doar numele complet și biografia profilului.

  Cum să ștergeți mesajele de pe Instagram de pe ambele părți

Apoi, definiți funcția care va rula dacă există o eroare.

def on_error(response):
    # Printing the error if something went wrong
    print('Something went wrong')
    print('Error Code:', response.status_code)
    print('Reason:', response.reason)

Apoi apelăm funcția get pentru a face cererea, trecând URL-ul, parametrii și cookie-urile ca argumente.

response = get(url, params, cookies=cookies)

Apoi, în sfârșit, verificăm codul de stare al erorii. Dacă starea este 200, apelăm funcția on_success. Altfel, numim funcția on_error.

if response.status_code == 200:
    on_success(response)
else:
    on_error(response)

În acest moment, am terminat de scris codul. Ceea ce a mai rămas este să obțineți sessionid-ul. Pentru a obține ID-ul sesiunii, deschideți Google Chrome și deschideți Instagram pe web. Asigurați-vă că sunteți autentificat, apoi deschideți Instrumentele de dezvoltare folosind Ctrl + Shift + I sau Cmd + Shift + I.

Cu instrumentele de dezvoltare deschise, deschideți fila Aplicație.

Apoi faceți clic pe submeniul Cookies pentru a vizualiza Cookie-urile utilizate de Instagram.

După care, copiați valoarea cookie-ului sessionid din lista de cookie-uri care vor fi listate în panoul Dev Tools.

După ce copiați ID-ul sesiunii, inserați-l în script și executați scriptul. În cazul meu, folosind Instagram ca nume de utilizator (https://instgram.com/instagram?__a=1&__d=1), aceasta este rezultatul.

Și chiar așa, suntem capabili să descarcăm dinamic datele de profil. Există mult mai multe date care sunt returnate din API-ul JSON. Aceasta este rezultatul când le imprimați pe toate:

Și așa extragi date și postări din profilurile Instagram.

Cuvinte finale

În acest articol, am analizat cum să descărcați postări și conținut media folosind Installoader. Apoi am scris un script personalizat pentru a extrage datele JSON de profil care includ mult mai mult decât conținutul media. Dacă v-a plăcut acest proiect, vă recomandăm să consultați postarea noastră despre Python Timeit to Time Your Code.

  Cum să remediați eroarea „Conturile dezactivate nu pot fi contactate” pe Instagram

Dacă sunteți interesat să profitați mai mult de experiența dvs. Instagram, consultați postarea noastră pe Qoob Stories: o recenzie detaliată a programului de descărcare Instagram.

x