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!
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:
https://www.instagram.com/<username>
.script
dont le texte commence par window._sharedData =
. Vous pouvez utiliser des expressions régulières ou une bibliothèque de grattage pour cela.;
à la fin) correspond aux données json souhaitées.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,
...
}
Dans le cas où vous recherchez l'expression régulière:
<script type="text\/javascript">window[.]_sharedData = {[\s\S]*};<\/script>
Ce point de terminaison fonctionne toujours, mais vous devez disposer de cookies valides provenant d'une session actuellement connectée.