Scraper liste complète followers Instagram

Hello,
Je suis assez admiratif d’outils comme PhantomBuster qui arrivent à scraper des listes de followers de très gros comptes (+200k par exemple) et je serais curieux de connaitre la méthode pour y parvenir.

Je scrape avec Selenium depuis pas mal d’années (l’outil importe peu), et j’ai toujours été confronté au problème de l’AJAX qui ne loade plus dans mon navigateur Chrome lorsque la liste commence à dépasser quelques centaines/milliers de followers:
image

La seule méthode que j’ai trouvé mais qui est sans garantie, est de réitérer le chargement de la page du compte et le scraping de multiples fois puis enlever les doublons. Mais j’aurais aimé connaitre une méthode un peu plus pro.
Merci de votre aide d’avance!
Maxence

Phantombuster, ils font ça par batch de 9K via le graph d’insta.

hello Camille, merci de ton retour. Je connais une méthode qui est de scraper Instagram en mode API & extract json avec l’extension ?__a=1 https://www.instagram.com/neymarjr/?__a=1 mais elle ne semble pas suffire. Peut-être que c’est également un sujet de navigateur Chrome trop « chargé » qui ne peut plus scroller ? Et qu’augmenter ma machine réglerait le problème…

Pour la liste des abonnés de Neymar, la requete est :

https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id"%3A"26669533"%2C"include_reel"%3Atrue%2C"fetch_mutual"%3Afalse%2C"first"%3A12%2C"after"%3A"QVFBNkxXeWdqYS1vaXJvbzc5NjNIaTdVaWN6amxPWTJ3elpjMFZJejFYb05abTlEX2x3ZVBrWDBuRG9SSjd1YW9VYVppUzMwaG1WM1dMS0Z3ZjYzRGlEVA%3D%3D"}

Mais le JSON est coupé en plusieurs morceaux. Par exemple, en haut du premier JSON, il y a écrit

{« data »:{« user »:{« edge_followed_by »:{« count »:139713654,« page_info »:{« has_next_page »:true,« end_cursor »:« QVFDSmY1TjRaZzJqcHdSZ3Bvd2RvLVUxcnZLMVI4RGhCUzV4N2VnNHNNeFZhSGFBcFJHcHotRm9qQWZxZXVCN0xvNnNYU0s0RWFjNDZ2Tk9vd3lnVHV2Tg== »}

Pour lire la suite des abonnés, il suffit de prendre la base du premier lien et d’ajouter le « en_cursor » à la suite :

https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id"%3A"26669533"%2C"include_reel"%3Atrue%2C"fetch_mutual"%3Afalse%2C"first"%3A12%2C"after"%3A"QVFEak1vV3B2Z2s1X3RDLWZqYW5MbEllQ0hZR1ZmT3VWb1ZOT1Q2Ul9SRTlaVEhrblRNM2hnWDFMUUhVNmpINHhMajFUa2ZBMk8yQzNJZ0Z6OFFzVldjOQ%3D%3D%22%7D

Puis regarder si il y a aussi un autre « end_cursor » à la fin pour continuer à scraper…

3 J'aimes

t’es un tueur. très bon, je fais quelques tests et reviens vers toi ! un énorme merci.

thanks pour cette info,

1 J'aime

@NicolasF Comment as-tu déterminé la requete initiale avec le query_hash à partir du profil de Neymar?

Comme ça :

3 J'aimes

merci Nicolas! Il y a surement un moyen d’obtenir la requete url graphql de façon automatisée (sans avoir à aller manuellement dans l’onglet Network du navigateur), mais je vais creuser je ne t’embete pas plus. Un grand merci encore.

Oui, je viens de voir que l’un de paramètre était l’ id du compte insta, donc oui, on peut automatiser.

{« logging_page_id »:« profilePage_26669533 »,« show_suggested_profiles »:true,« show_follow_dialog »:false,« graphql »:{« user »:{« biography »:« I love Football \u2764\ufe0f\u26bd\ufe0f »,« blocked_by_viewer »:false,« restricted_by_viewer »:false,« country_block »:false,« external_url »:"http://www.institutoneymarjr.org.br/",« external_url_linkshimmed »:"https://l.instagram.com/?

on retrouve l’id ici :

https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id"%3A"26669533%22%2C%22include_reel%22%3Atrue%2C%22fetch_mutual%22%3Atrue%2C%22first%22%3A24%7D

Oui j’avais vu l’ID mais c’est plus le query_hash qui me semble compliqué à reconstruire :confused:

Si tu mets l’id d’un autre profil, tu auras la liste des abonnés de ce profil.