Savoir son nombre de followers instagram
Résoluquentin2121 Messages postés 9015 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 14 février 2025 - 17 déc. 2024 à 19:22
Bonjour,
Je cherche à m'inspirer d'un script python pour connaitre son nombre de followers sur Instagram. Merci des exemples.
- Savoir son nombre de followers instagram
- Supprimer compte instagram - Guide
- Comment savoir qui regarde mon profil instagram - Guide
- Créer un compte instagram sur google - Guide
- Télécharger instagram sur pc - Télécharger - Divers Communication
- Restreindre instagram - Guide
5 réponses
Modifié le 18 nov. 2024 à 20:14
Bonjour,
En premier lieu, le compte Instagram doit être "Creator" ou "Business" pour disposer d'une clé API.
Ensuite, avant de rédiger le script, il convient de s'imprégner de la documentation API :-)
Cette doc en main, il suffit de rédiger un script Python tapant une requête GET sur l'API Instagram avec les bons paramètres puis lire le contenu du JSON renvoyé.
import requests TOKEN_API = "TOKEN_API" USER = "ID_USER_INSTAGRAM" URL_API = f"https://graph.facebook.com/v21.0/{USER}/insights" parametres_requete = { "metric": "follower_count", "period": "lifetime", "access_token": TOKEN_API } reponse = requests.get(URL_API, params=parametres_requete) if reponse.status_code == 200: try: body = reponse.json() if "data" in body and body["data"]: nb_followers = body["data"][0].get("values", [{}])[0].get("value", "Non disponible") print(f"Nombre de followers : {nb_followers}") else: print("Soit aucune donnée n'est disponible, soit le compte a moins de 100 followers.") except ValueError as exception: print(f"Impossible de lire le contenu du JSON, erreur : {exception}") else: print(f"Erreur {reponse.status_code} rencontrée.")
Tenez au jus !
16 déc. 2024 à 18:37
import instaloader # Créer une instance d'Instaloader L = instaloader.Instaloader() # Remplacez 'votre_nom_utilisateur' par le nom d'utilisateur du compte Instagram username = 'plume_quentique_du_mascaret' # Charger le profil profile = instaloader.Profile.from_username(L.context, username) # Afficher le nombre de followers print(f"Le compte {username} a {profile.followers} followers.")
Avec ce script ça fonctionne, tant mieux, merci pour ton aide !
16 déc. 2024 à 19:49
Tant mieux si ça convient, marque le sujet en résolu
Si tu trouves comment régler l'erreur du message 43, reviens poster ici pour les suivants
17 déc. 2024 à 13:34
J'ai remarqué que ce script, fonctionnel, est stocké en :
C :\Users\quent\onedrive\desktop\Python
Les autres codes sont :
C:\Users\quent\PycharmProjects\pythonProject
Je ne sais pas si cela à un lien de cause à effet ?
17 déc. 2024 à 16:02
Intéressant.
Python est exécuté où il est installé mais les chemins relatifs sont liés au répertoire courant.
Quand tu fais pydevp.py --file, ton script est chargé en mémoire mais Python utilise toujours le répertoire courant pour accéder aux fichiers.
Ces deux répertoires n'ont peut-être pas les mêmes droits d'accès.
Pour vérifier si tu te le sens, ajoute ça en haut du script :
import os import sys print("Interpréteur Python : ", sys.executable) print("Répertoire courant où le script est exécuté : ", os.getcwd()) print("Droits d'accès et écriture dans le répertoire courant : ", os.access(os.getcwd(), os.W_OK)) print("Liste des fichiers présents dans le répertoire courant : ", os.listdir(os.getcwd()))
17 déc. 2024 à 19:22
One drive est apparemment comme un dossier sur C. J'ai stoppé la sauvegarde automatique vers One drive, mon quota gratuit est rempli. Peut-être ai-je fait une fausse manipulation en créant ce script ? Quand je retourne sur le répertoire de PyCharm, que je crée un nouveau script, il est bien enregistré dans son répertoire avec lequel est installé PyCharm. Je ne teste pas plus.
18 nov. 2024 à 22:27
Mon compte insta n'est pas professionnel ou creator. Je me connecte par un navigateur a partir du pc, comme sur smartphone.
Est que ce code sur le lien suivant ferait l'affaire :
https://openclassrooms.com/forum/sujet/compteur-dabonne-sur-insta
Modifié le 19 nov. 2024 à 10:19
C'est du scraping de site Web. Il suffit que la page change pour devoir mettre à jour le script, en plus d'être une pratique non forcément acceptée. Quid des dérives sur un forum public. Je n'apporterai aucune aide sur cette piste ¯\_(ツ)_/¯
19 nov. 2024 à 16:46
from bs4 import BeautifulSoup import requests import time while(True): URL = "https://www.instagram.com/systorm.os_off/" def parse_data(s): data = {} s = s.split("-")[0] s = s.split(" ") data['Followers'] = s[0] #data['Following'] = s[2] #data['Posts'] = s[4] return data def scrape_data(username): try: r = requests.get(URL.format(username)) s = BeautifulSoup(r.text, "html.parser") meta = s.find("meta", property ="og:description") return parse_data(meta.attrs['content']) except AttributeError : pass if __name__=="__main__": username = "Systorm-OS Officiel" data = scrape_data(username) print(data) time.sleep(50)
j'ai comme réponse "none", où est le problème ?
Modifié le 19 nov. 2024 à 20:53
A la limite
- si y avait un seul truc à corriger,
- vu que c'est déjà posté,
j'aurais mis mais là y a vraiment trop à faire.
Le script présent sur le topic de forum où tu l'as récupéré date de bien avant mai 2022 et la 4ème réponse était déjà bien explicite :
"C'est généralement une très mauvaise idée de faire des requêtes de ce genre à des sites tels que Google/Facebook/etc. Tu peux essayer de regarder leur API. Eventuellement, tu peux aussi passer par
https://www.instagram.com/###USER_NAME###/?__a=1
qui permet d'obtenir un JSON avec les informations que tu souhaites mais pas sûr que tu ne te fasses pas blacklister en l'utilisant trop souvent"
Aparté, sur Powershell la commande
Invoke-WebRequest -Uri "https://www.instagram.com/blitzstream_officiel/?__a=1" -Method Get
ne renvoie plus le nombre d'abonnés mais elle répond. Tu peux déjà te faire la main sur ce genre de commandes.
Voici le site d'origine d'où provient le script que tu as récupéré. En bas, il mentionne être une traduction de ce site où le post date du 21 juillet 2021. Tente avec cette version, on peut être surpris. Autrement, je te laisse voir les liens présents au post #1 pour une approche plus pérenne et formatrice.
Crois-bien qu'au premier refactor de la page Instagram tu vas abandonner le projet. Une MAJ du script suite à évolution d'API c'est 30min en lisant la doc.
Modifié le 20 nov. 2024 à 12:27
Je vais abandonner le projet, c'est trop compliqué pour mon niveau de script. Merci de ton aide.
Je vais tenter par acquit de conscience ceci :
https://acervolima.com/obter-detalhes-do-perfil-do-instagram-usando-python/
Modifié le 20 nov. 2024 à 13:12
Tiens au jus mais tu te bases là sur le lien de "Voici le site d'origine" où le scraping se base sur la page Instagram en 2021. Le Web scraping est régulièrement combattu à juste titre par les grands sites pour éviter des requêtes automatisées en masse ou du vol de contenu, entre autres.
C'est une des raisons pourquoi je ne peux pas aider sur cette piste sur un forum public : ton script lancera peut-être une requête par jour quand un lecteur du forum, 3 ans après, lancera une requête chaque milliseconde.
Je ne sais pas quel était le besoin mais si c'est pour ton compte dans un usage pro/semi-pro, monter de version offre d'autres possibilités qu'un accès API :-)
Et à titre perso tu apprendras plus avec une API où cette connaissance est réplicable.
Modifié le 29 nov. 2024 à 17:02
Bonjour,
J'omets tous les aspects liés aux clés et sur le scraping car luckydu43 a selon moi déjà dit tout ce qu'il y avait dire.
As-tu regardé le paquet instaloader et plus particulièrement la fonction get_followers ?
from instaloader import Instaloader USER = "ton_login_instagram" L = Instaloader() # Optionally, login or load session # L.login(USER, PASSWORD) # (login) L.interactive_login(USER) # (ask password on terminal) # L.load_session_from_file(USER) # (load session created w/ # # `instaloader -l USERNAME`) profile = Profile.from_username(L.context, USER) followers = profile.get_followers() print(followers) print(f"{len(followers)} followers")
Bonne chance
Modifié le 28 nov. 2024 à 16:35
Bonjour @mamiemando StatutModérateur
@quentin2121 StatutMembre, c'est une erreur de syntaxe fstring, pardonnable à mamiemando car écrit sans IDE mais un peu moins pour toi : développer n'est rien sans debugging :-)
L'erreur dit "f-string: expecting '}" donc qu'il manque une accolade (ça te dit même où, quasi) :
print(f"{len(followers)} followers")
... et je pense qu'il vaut mieux que tu essaies avec ton login --'
29 nov. 2024 à 17:05
- #17, #18: oui pardon pour la typo, et merci pour la correction.
- #17, #21: quentin2121 je te recommande de te familiariser avec le langage python et avec PyCharm, car ce genre de question ne devrait normalement pas te bloquer. Je pense aussi qu'il faut que prennes le réflexe de comprendre les messages d'erreurs afin de gagner en autonomie.
Bonne chance
2 déc. 2024 à 12:39
Bonjour,
Le prioblème c'est que pour répondre à ce sujet il faut un compte instagram (or je n'en ai pas et ne souhaite pas en créer, même à des fin de tests).
Par rapport à #25, je pense dans ce que tu écris que c'est plus :
nbFollowers = len(profile.followers)
@quentin2121 StatutMembre:
- si tu es sous windows, exécute ton programme depuis un terminal (lignes de commandes MS-DOS, hyperterminal ...) ; ou ajoute en fin de programme
input("Appuyer sur entrée")
- lis la documentation et pour des questions plus spécifiques à ce module ;
- si tu penses qu'il y a un bug, pose ta question dans l'un des canaux listés ici.
Bonne chance
9 déc. 2024 à 12:28
Effectivement, c'est étonnant, mais instaloader ne semble pas supporter les authentifications par token. Il faudrait ajouter le code adéquat dans InstaloaderContext (en s'inspirant se basant sur la documentation) et ajouter une méthode (disons token_login) dans la classe Instaloader (en s'inspirant de interactive_login). Ça nécessite de maîtriser un minimum le paquet requests mais rien d'insurmontable si on prend le temps d'apprendre python et surtout... de lire la documentation.
Modifié le 10 déc. 2024 à 19:30
- "Je devrais donc installer l'appli insta, au lieu de me connecter par le site avec login et mdp, ainsi, j'éviterai la double authentification ? Avec une API ce n'est pas le même mot de passe que sur leur site ?"
Installer l'appli ou non ne changera rien : au lancement du programme Python il effectuera une requête HTTP sans vérifier si l'application est installée ou non.
- "Avec une API ce n'est pas le même mot de passe que sur leur site"
Généralement les applications Web proposent un token d'authentification d'application à générer depuis le compte puis à utiliser avec les programmes tapant sur le serveur sans passer par les interfaces de connexion utilisateur (page web, appli) : ce n'est pas obligatoire.
Dans ton cas, au lieu de rester bloqué, essaie d'activer depuis Instagram le 2FA sur ton compte.
Associe ça avec Authenticator 6 ou Google Authenticator.
Quand le script Python lancera une requête avec ton login, tu recevras sur cette appli le code 2FA et pourras aller plus loin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 12 déc. 2024 à 20:06
Ah ah, Instagram se défend ^^
Jusque là c'est bon signe que ça réponde. La troisième fois est normale, il y a une limite aux appels de ton programme.
Tu peux utiliser une session unique pour faire tes appels, pour cela go documentation précisément le stockage de la session dans un fichier (y a 2 liens).
Rapidement je vois ça, je te laisse corriger si besoin, je suis sur autre chose ^^
L'exception c'est parce que ça peut la lever, par ex une question de droits d'accès en lecture/écriture au fichier de session généré
import instaloader login = 'plume_quentique_du_mascaret' mdp = 'mdp' session_file = f"{login}.session" # Créer une instance d'Instaloader L = instaloader.Instaloader() try: L.load_session_from_file(session_file) except FileNotFoundError: L.context.username = login L.context.password = mdp L.context.do_login(L.context.username, L.context.password) L.save_session_to_file(session_file) # Charger le profil profile = instaloader.Profile.from_username(L.context, login) # Afficher le nombre de followers print(f"Le compte {login} a {profile.followers} followers.")
Tiens au jus, comme d'hab
14 déc. 2024 à 16:03
C:\Users\quent\AppData\Local\Programs\Python\Python311\python.exe C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py
Traceback (most recent call last):
File "C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py", line 12, in <module>
L.load_session_from_file(session_file)
File "C:\Users\quent\AppData\Local\Programs\Python\Python311\Lib\site-packages\instaloader\instaloader.py", line 635, in load_session_from_file
with open(filename, 'rb') as sessionfile:
^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\users\\quent\\appdata\\local\\temp/.instaloader-quent/session-plume_quentique_du_mascaret.session'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py", line 16, in <module>
L.context.do_login(L.context.username, L.context.password)
^^^^^^^^^^^^^^^^^^
AttributeError: 'InstaloaderContext' object has no attribute 'do_login'
15 déc. 2024 à 17:46
Il y a eu 2 levées.
La 2ème c'est un loupé de ma part en réécrivant le code, c'est login() et non do_login() , cf doc
La première c'est la FileNotFoundError attendue, là encore logique de la lever à la première exécution vu qu'il n'a pas encore stocké la session dans le fichier.
Comme j'ai dit, c'était une proposition rapide. Fallait aller plus loin qu'exécuter et attendre qu'on corrige --' Qu'avais-tu analysé de ton côté ?
Voici une propale. Sois proactif dans ton code, c'est ton projet. Tu viens littéralement de pondre une stack trace sans la lire.
import instaloader login = 'plume_quentique_du_mascaret' mdp = 'mdp' session_file = f"{login}.session" # Créer une instance d'Instaloader L = instaloader.Instaloader() try: L.load_session_from_file(session_file) except FileNotFoundError: L.context.login(login, mdp) L.save_session_to_file(session_file) # Charger le profil profile = instaloader.Profile.from_username(L.context, login) # Afficher le nombre de followers print(f"Le compte {login} a {profile.followers} followers.")
16 déc. 2024 à 14:16
C:\Users\quent\AppData\Local\Programs\Python\Python311\python.exe C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py
Traceback (most recent call last):
File "C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py", line 12, in <module>
L.load_session_from_file(session_file)
File "C:\Users\quent\AppData\Local\Programs\Python\Python311\Lib\site-packages\instaloader\instaloader.py", line 635, in load_session_from_file
with open(filename, 'rb') as sessionfile:
^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'c:\\users\\quent\\appdata\\local\\temp/.instaloader-quent/session-plume_quentique_du_mascaret.session'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\quent\PycharmProjects\pythonProject\TAGRAM.py", line 14, in <module>
L.context.login(login, mdp)
File "C:\Users\quent\AppData\Local\Programs\Python\Python311\Lib\site-packages\instaloader\instaloadercontext.py", line 304, in login
raise TwoFactorAuthRequiredException("Login error: two-factor authentication required.")
instaloader.exceptions.TwoFactorAuthRequiredException: Login error: two-factor authentication required.
16 déc. 2024 à 14:17
Tu viens littéralement de pondre une stack trace sans la lire
16 déc. 2024 à 14:41
Je ne comprends pas les erreurs lignes 12 et 14, j'ai bien activé la double authentification sur le site Instagram.