新的instagram json端点是什么?
Instagram用于在端点下以json形式公开开放数据新的instagram json端点是什么?,json,api,instagram,instagram-api,endpoint,Json,Api,Instagram,Instagram Api,Endpoint,Instagram用于在端点下以json形式公开开放数据https://www.instagram.com//?__a=1。这在夜间发生了变化,端点不再可用。新的端点是什么,或者有什么替代方案 提前谢谢 端点不再存在。Facebook因为丑闻而限制API。当然,数据仍然在那里,Instagram的前端需要它,所以现在的替代方法是抓取页面并在那里找到json数据。我是这样做的: 是否使用http访问https://www.instagram.com/ 查找文本以窗口开头的脚本标记。\u shar
https://www.instagram.com//?__a=1
。这在夜间发生了变化,端点不再可用。新的端点是什么,或者有什么替代方案
提前谢谢 端点不再存在。Facebook因为丑闻而限制API。当然,数据仍然在那里,Instagram的前端需要它,所以现在的替代方法是抓取页面并在那里找到json数据。我是这样做的:
- 是否使用http访问
https://www.instagram.com/
- 查找文本以
窗口开头的
脚本
。您可以为此使用正则表达式或刮取库标记。\u sharedData=
- 文本的其余部分(除了末尾的
)是您想要的json数据;
- 将字符串化的json转换为json,以便像以前一样访问它
- “entry_data”键中的“ProfilePage”键中的第一个元素与旧端点返回的json完全对应
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,
...
}
如果您正在寻找正则表达式:
window[.]\u sharedData={[\s\s]*}代码>此端点仍然有效,但您必须拥有当前登录会话中的有效cookie。https://www.instagram.com//?__a=1
https://www.instagram.com/<username>/?__a=1
工作正常,但您必须登录您可以像instagram scraper软件包一样创建会话
您不需要提供用户名和密码。下面的代码段将创建一个匿名会话
导入请求
导入json
尝试:
从urllib.parse导入urlparse
除恐怖外:
从URLPRASE导入URLPRASE
基本URL=https://www.instagram.com/'
CHROME_WIN_UA='Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,像Gecko)CHROME/67.0.3396.87 Safari/537.36'
会话=请求。会话()
session.headers={'user-agent':CHROME\u WIN\u UA,'Referer':BASE\u URL}
session.cookies.set('ig_pr','1')
req=会话.get(基本URL)
session.headers.update({'X-CSRFToken':req.cookies['CSRFToken']})
url=”https://www.instagram.com/instagram/?__a=1"
response=session.get(url,cookies=,headers={'Host':urlparse(url.hostname},stream=False,timeout=90)
打印(response.json())
我面临着同样的问题:(你犯了什么错误?我发现公共账户目前正在运行:@nicolarirobles该url在过去几年中似乎有效/无效。)days@Alex是的,它有时会起作用,但后来又起作用了。。。