什么是新的Instagram json端点?

Die*_*des 10 api json endpoint instagram instagram-api

Instagram用于在端点下将开放数据公开为json https://www.instagram.com/<username>/?__a=1.这改变了一夜,端点不再可用.什么是新的端点或什么可以替代它?

提前致谢!

Die*_*des 19

端点不再存在.由于丑闻,Facebook正在限制API.当然数据仍然存在,Instagram的前端需要它,所以现在的另一种选择是刮掉页面并在那里找到json数据.我是这样做的:

  • 做一个http到达https://www.instagram.com/<username>.
  • 查找script文本开头的标记window._sharedData =.您可以使用正则表达式或抓取库.
  • 文本的其余部分(最后除外;)是您想要的json数据.
  • 将字符串化的json转换为json,以便像以前一样访问它.
  • "entry_data"键中"ProfilePage"键中的第一个元素与旧端点返回的json完全对应.

以下是使用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,
...
}
Run Code Online (Sandbox Code Playgroud)


Emi*_*m23 7

如果您正在寻找正则表达式:

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