如何用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
相关产品推荐
相关产品推荐

