web-dev-qa-db-fra.com

Comment extraire des données Instagram

J'essaie de construire une base de données Microsoft Access de comptes Instagram et je souhaite extraire les données suivantes, entre autres:

  • Nom du compte
  • Nombre d'abonnés
  • Nombre de personnes suivies
  • Nombre de messages (et leurs dates)
  • Nombre de likes de photo
  • Nombre de commentaires sur la photo

Je n'ai aucune difficulté à créer des bases de données, mais je veux savoir s'il existe un moyen plus facile/plus rapide d'obtenir toutes les informations sans avoir à parcourir chaque image/compte individuel et à sélectionner les informations.

Microsoft Access est-il la meilleure solution? Y a-t-il de meilleures solutions?

5
Bryce Edwards

Eh bien, si cette question a un mot clé "Web-Scraping", permettez-moi de partager quelques informations ici ..

Instagram a des données JavaScript JSON dans sa source html tout en affichant les informations de l'utilisateur par lien, comme https://www.instagram.com/user-account/ . Vous pouvez analyser ces données par n'importe quel langage de script et obtenir des données JSON.

Instagram n'affiche que 10 messages une fois dans une seule demande , vous pouvez voir les informations de base de l'utilisateur comme le nom d'utilisateur, la biographie, pas de messages, pas de followers et d'abonnés . Mais, si nous avons besoin de tous les likes et commentaires et de toutes les images ou likes et commentaires pour chaque photo . Ensuite, nous devons cliquer sur leur 'Load more '.

Charger plus demander un appel Ajax inclure '? Max_id ' qui vous donne les 10 prochains messages. Vous devez donc créer une boucle Post pour envoyer/obtenir des informations de repos jusqu'à ce que 'max_id' soit vide ou nul .

Exemple de demande: première page, https://www.instagram.com/demo-user/

Prochaine demande de données: https://www.instagram.com/demo-user/?max_id=1533276522

etc...

Récemment, j'ai eu du temps libre et j'étais en colère sur Instagram;) Alors j'ai juste fait un script pour résoudre tous ces problèmes. Cela fonctionne sur PHP et le code sont bien commentés, donc je ne pense pas que cela cause de problème pour comprendre le flux d'application. Vous pouvez voir le script, comment il fonctionne peut utiliser la logique avec n'importe quel autre Langue.

Cela vient de ceci Code de référentiel GitHub

.. Oui, cela ne nécessite pas d'API Instagram ou bien ..:)

9
Neeraj Singh

Pourquoi ne pas simplement regarder les données json directement avec l'URL:

https://www.instagram.com/ /? __ a = 1

7
Gordon

Vous devriez certainement vérifier l'API d'Instagram, qui peut vous fournir toutes les informations publiques que vous souhaitez gratter. Vous aurez juste besoin d'écrire un script pour effectuer les appels API appropriés (fournis ci-dessous).

Depuis le site Web d'Instagram:

Nous faisons de notre mieux pour que toutes nos URL soient RESTful. Chaque point de terminaison (URL) peut prendre en charge l'un des quatre verbes http différents. Les requêtes GET récupèrent des informations sur un objet, POST créent des objets, les requêtes PUT mettent à jour les objets et enfin les requêtes DELETE suppriment les objets.

Vous aurez juste besoin que la valeur ACCESS-TOKEN pour le compte concerné soit prête lorsque vous utilisez l'URL dans votre code et que vous puissiez décompresser le json qu'Instagram vous revient avec chaque demande GET. Si les données ne sont pas directement disponibles, vous pouvez toujours les sauvegarder indirectement. - Nom du compte - Nombre d'abonnés - Nombre de personnes suivies

Voici un excellent point de départ: https://www.instagram.com/developer/endpoints/users/#get_users

Et voici comment vous appelleriez une API en python:

#Python 2.7.6
#RestfulClient.py

import requests
from requests.auth import HTTPDigestAuth
import json

# Replace with the correct URL
url = "http://api_url"

# It is a good practice not to hardcode the credentials. So ask the user to enter credentials at runtime
myResponse = requests.get(url,auth=HTTPDigestAuth(raw_input("username: "), raw_input("Password: ")), verify=True)
#print (myResponse.status_code)

# For successful API call, response code will be 200 (OK)
if(myResponse.ok):

    # Loading the response data into a dict variable
    # json.loads takes in only binary or string variables so using content to fetch binary content
    # Loads (Load String) takes a Json file and converts into python data structure (dict or list, depending on JSON)
    jData = json.loads(myResponse.content)

    print("The response contains {0} properties".format(len(jData)))
    print("\n")
    for key in jData:
        print key + " : " + jData[key]
else:
  # If response code is not ok (200), print the resulting http error code with description
    myResponse.raise_for_status()
3
frankbacon322

Ce repo a tout: https://github.com/rarcega/instagram-scraper

Lisez les options correctement.

instagram-scraper incindia -m 500 --media-metadata --include-location --media-types none m'a donné un json qui a:

  • une URL à l'image des médias,
  • type de média, nombre de vues,
  • nombre de likes, nombre de commentaires (--comment vous donne aussi tous les commentaires)

et encore plus à explorer pour moi.

Vous pouvez également télécharger tous les médias

0
fireball.1