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

如何获取图片URL?从Twitter API的JSON中访问media_url遇阻

嘿,我来帮你解决这两个和图片URL、Twitter API相关的问题,都是新手常踩的小坑~

一、如何获取图片URL?

获取图片URL的方式分场景来看:

  • 网页上的现有图片:最简单的方法是在图片上右键,选择「复制图片地址」(不同浏览器的选项文字可能略有差异,比如Chrome是“复制图片地址”,Edge是“复制链接”),直接就能拿到完整的图片URL。
  • 本地图片生成URL:你需要先把图片上传到支持媒体托管的平台(比如Twitter的媒体库、各类图床服务),上传完成后平台会提供对应的公开访问URL。
  • 通过API获取:就像你用Twitter API的场景,图片URL会包含在API返回的JSON数据里,这也是我们第二个问题要重点解决的。
二、访问Twitter API返回JSON中深层嵌套的media_url属性

Twitter API v2的返回结构做了拆分,媒体信息并不直接嵌套在推文的data字段下,而是放在includes里,这也是很多人初次调用时踩的坑。我给你拆解下步骤,再附个代码例子:

先搞懂API返回的结构逻辑

假设你拿到的JSON响应大致是这样的:

{
  "data": {
    "id": "123456789",
    "text": "这条推文带了一张图片",
    "attachments": {
      "media_keys": ["1_xyz123"]
    }
  },
  "includes": {
    "media": [
      {
        "media_key": "1_xyz123",
        "type": "photo",
        "media_url": "https://pbs.twimg.com/media/abc123.jpg"
      }
    ]
  }
}

可以看到:

  1. 推文的data里只有media_keys,用来关联媒体资源
  2. 实际的媒体详情(包括media_url)在includes.media数组里,通过media_key和推文关联

正确的访问方式(以Python为例)

为了避免KeyError,建议用字典的get()方法来逐层访问,同时做空值判断:

# 假设response是你解析后的JSON字典
tweet_data = response.get('data', {})
# 先获取attachments,不存在则返回空字典
attachments = tweet_data.get('attachments', {})
# 获取media_keys数组,不存在则返回空列表
media_keys = attachments.get('media_keys', [])

if media_keys:
    # 从includes里取出媒体列表
    media_list = response.get('includes', {}).get('media', [])
    # 匹配对应的media_key
    for media_item in media_list:
        if media_item.get('media_key') == media_keys[0]:
            target_url = media_item.get('media_url')
            print(f"找到图片URL:{target_url}")
            break
else:
    print("这条推文没有附带图片或其他媒体")

常见报错原因

  • 你可能直接尝试从data字段下找media_url,但Twitter API v2把媒体资源单独放在includes里了,所以会提示KeyError。
  • 没有做空值判断,如果推文没有媒体,attachments或media_keys不存在,直接用[]访问会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:59