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

如何用Python打印TMDB前50部电影的原始标题?解决KeyError问题

解决TMDB API提取前50部电影原始标题的问题

错误原因

你遇到的KeyError: 'original_title'是因为original_title并非返回JSON的顶层字段——它嵌套在results数组的每一个电影对象中,你的代码直接从顶层JSON对象中读取该字段,自然找不到对应的键。

修正方案

方案1:一次性获取50条数据(推荐)

TMDB的discover/movie接口支持通过page_size参数设置每页返回的条数(最大50条),只需在请求URL中添加该参数,即可一页拿到前50部电影:

import requests

# 注意添加page_size=50参数,指定每页返回50条数据
request_url = "https://api.themoviedb.org/3/discover/movie?api_key=my_key&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false&page=1&with_watch_monetization_types=flatrate&page_size=50"
response = requests.get(request_url)
json_data = response.json()

# 遍历results数组,提取每部电影的原始标题
for index, movie in enumerate(json_data["results"], start=1):
    print(f"{index}. {movie['original_title']}")

方案2:分页请求凑够50条

如果无法设置page_size(比如接口限制),可以通过循环请求多页数据,直到收集到50部电影:

import requests

api_key = "my_key"
base_url = "https://api.themoviedb.org/3/discover/movie"
request_params = {
    "api_key": api_key,
    "language": "en-US",
    "sort_by": "popularity.desc",
    "include_adult": "false",
    "include_video": "false",
    "with_watch_monetization_types": "flatrate"
}

collected_count = 0
current_page = 1

while collected_count < 50:
    request_params["page"] = current_page
    response = requests.get(base_url, params=request_params)
    json_data = response.json()
    movie_list = json_data["results"]
    
    for movie in movie_list:
        if collected_count >= 50:
            break
        collected_count += 1
        print(f"{collected_count}. {movie['original_title']}")
    
    current_page += 1
    # 防止请求超过总页数
    if current_page > json_data["total_pages"]:
        break

说明

  • 方案1更高效,减少请求次数,适合大多数场景。
  • 方案2兼容严格的分页限制,会自动终止请求当已收集够50条或无更多数据时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:20:28