如何通过Python Requests获取Instagram公开账号帖子?
问题解答
1. ?__a=1 端点是否仍有效?
无效。Instagram早在2020年左右就停用了这个非官方的API端点,现在访问该URL只会返回账号的网页HTML内容,这就是你收到HTML、触发JSON解码错误的原因。
2. Meta应用的access_token能否获取JSON数据?
可以,但必须配合官方API端点使用,不能直接附加到原来的网页URL上:
- 若获取个人公开账号的帖子,需使用Instagram Basic Display API,access_token需具备
user_profile和user_media权限; - 若获取企业/商家公开账号的帖子,需使用Instagram Graph API,access_token需对应权限(如
business_management、instagram_basic)。
注意:获取非自身授权账号的公开内容,可能需要额外申请API权限,否则仅能获取已授权账号的数据。
3. 代码调整方案
你需要完全替换请求端点,改用官方API。以下是基于Instagram Basic Display API的示例代码(假设你已获取有效access_token并完成账号授权):
import requests import json def scrape_instagram_data(user_id, num_posts, access_token): # 配置请求参数,可按需添加更多返回字段 params = { 'access_token': access_token, 'fields': 'id,caption,media_url,timestamp', 'limit': num_posts } # 官方用户媒体内容请求端点 base_url = f"https://graph.instagram.com/{user_id}/media" response = requests.get(base_url, params=params) if response.status_code == 200: data = response.json() # 格式化打印返回数据 print(json.dumps(data, indent=2)) # 如需获取更多帖子,可通过data['paging']['next']进行分页请求 else: print(f"请求失败: {response.status_code}, {response.text}") # 使用示例(替换为实际的用户ID和access_token) scrape_instagram_data("目标用户ID", 10, "你的有效access_token")
补充说明:
- 用户ID获取:若为自身授权账号,可调用
https://graph.instagram.com/me?fields=id&access_token=你的token获取;若为其他公开账号,需通过具备权限的搜索API或合规第三方工具查询。 - 权限校验:确保你的Meta应用已申请并通过对应API的权限审核,否则会返回权限不足的错误。
内容的提问来源于stack exchange,提问作者kuri_neon
相关产品推荐
相关产品推荐

