web-dev-qa-db-fra.com

Quel est le nouveau point de terminaison instagram json?

Instagram utilisé pour exposer les données ouvertes en tant que json sous le point de terminaison https://www.instagram.com/<username>/?__a=1. Cela a changé au cours de la nuit, le point final n'est plus disponible. Quel est le nouveau point final ou quelle pourrait être une alternative à cela?

Merci d'avance!

10

Le point de terminaison n'existe plus. Facebook restreint les API en raison de scandales. Les données sont toujours là bien sûr, le frontend d'Instagram en a besoin, donc l'alternative en ce moment est de gratter la page et d'y trouver les données json. Voici comment je le fais:

  • Faites un http pour accéder à https://www.instagram.com/<username>.
  • Recherchez la balise script dont le texte commence par window._sharedData =. Vous pouvez utiliser des expressions régulières ou une bibliothèque de grattage pour cela.
  • Le reste du texte (à l'exception du ; à la fin) correspond aux données json souhaitées.
  • Castez le json stratifié dans json afin d'y accéder comme auparavant.
  • Le premier élément de la clé 'ProfilePage' de la clé 'entry_data' correspond exactement au json renvoyé par l'ancien point de terminaison.

Voici un exemple utilisant Python:

import requests
from bs4 import BeautifulSoup
import re
import json

r = requests.get('https://www.instagram.com/github/')
soup = BeautifulSoup(r.content)
scripts = soup.find_all('script', type="text/javascript", text=re.compile('window._sharedData'))
stringified_json = scripts[0].get_text().replace('window._sharedData = ', '')[:-1]

json.loads(stringified_json)['entry_data']['ProfilePage'][0]

Out[1]:
{u'graphql': {u'user': {u'biography': u'How people build software.',
u'blocked_by_viewer': False,
...
}
19

Dans le cas où vous recherchez l'expression régulière:

<script type="text\/javascript">window[.]_sharedData = {[\s\S]*};<\/script>

6
Emixam23

Ce point de terminaison fonctionne toujours, mais vous devez disposer de cookies valides provenant d'une session actuellement connectée.

0
Mike McCartin