You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Instagram接口JSON无display_url与video_url时,如何下载最高分辨率的帖子(图片、Reels、IGTV)?

解决Instagram帖子下载中API参数变更的问题

作为刚接触URL/API下载领域的开发者,碰到Instagram非官方接口的参数变化真的很头疼——毕竟他们经常调整这些未公开的接口,之前教程里的字段说没就没了。不过别担心,我们可以通过分析当前返回的JSON结构来解决这个问题。

先理清当前的JSON结构逻辑

现在你用https://www.instagram.com/p/CcjyBsquX89/__a=1这类URL获取到的JSON,虽然没有了display_url和video_url,但媒体资源的信息其实都还在,只是换了存储方式:

  • 单图/单视频帖:媒体信息在graphql.shortcode_media节点下
  • 多图/多视频帖(Sidecar):媒体列表在graphql.shortcode_media.edge_sidecar_to_children.nodes数组里

提取最高分辨率的图片URL

对于图片类内容,每个媒体节点里的display_resources数组会包含不同分辨率的版本,Instagram是按分辨率从低到高排列这些资源的,所以直接取数组的最后一个元素的src字段就是最高清的图片链接:

# 示例:解析单图帖的最高清URL
import json

response_json = json.loads(api_response_text)
if response_json['graphql']['shortcode_media']['__typename'] == 'GraphImage':
    display_resources = response_json['graphql']['shortcode_media']['display_resources']
    highest_res_img_url = display_resources[-1]['src']
    print(f"最高清图片URL: {highest_res_img_url}")

提取最高分辨率的视频URL

对于视频类内容(Reels、IGTV、普通视频帖),你需要找video_versions数组,同样这个数组也是按分辨率从低到高排列的,取最后一个元素的url就是最高清的视频链接:

# 示例:解析单视频帖的最高清URL
if response_json['graphql']['shortcode_media']['__typename'] == 'GraphVideo':
    video_versions = response_json['graphql']['shortcode_media']['video_versions']
    highest_res_video_url = video_versions[-1]['url']
    print(f"最高清视频URL: {highest_res_video_url}")

处理多媒帖(包含图片+视频的帖子)

如果是多媒帖,你需要遍历edge_sidecar_to_children.nodes数组,逐个判断每个节点的__typename(GraphImage或GraphVideo),再分别用上面的方法提取对应资源:

# 示例:解析多媒帖的所有最高清资源
if response_json['graphql']['shortcode_media']['__typename'] == 'GraphSidecar':
    media_nodes = response_json['graphql']['shortcode_media']['edge_sidecar_to_children']['nodes']
    for node in media_nodes:
        if node['__typename'] == 'GraphImage':
            highest_res = node['display_resources'][-1]['src']
            print(f"图片最高清URL: {highest_res}")
        elif node['__typename'] == 'GraphVideo':
            highest_res = node['video_versions'][-1]['url']
            print(f"视频最高清URL: {highest_res}")

额外提醒

Instagram的非官方接口(比如加__a=1的这种)随时可能再次变更字段或结构,所以开发时最好加入错误处理逻辑,比如判断字段是否存在,避免程序崩溃。另外,如果是长期维护的应用,建议考虑使用Instagram的官方Graph API(需要申请权限),这样稳定性会高很多。

内容的提问来源于stack exchange,提问作者Vasant Raval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:28:09