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

使用Python调用TMDB API提取release_date时触发KeyError问题求助

解决TMDB API循环获取多页热门电影数据的KeyError问题

通过TMDB API提取热门电影数据时,单页请求可正常运行,但循环获取3页数据时触发KeyError,提示'release_date'键不存在。原代码及错误栈如下:

import requests
import pandas as pd
import numpy as np

title=[]
overview=[]
popularity=[]
release_date=[]
vote_count=[]
vote_average=[]
adult=[]
original_language=[]
for i in np.arange(1, 3):
  # replace <<my_api_key>> with your key
  url = f'https://api.themoviedb.org/3/movie/popular?api_key=<<my_api_key>>&language=en-US&page={i}'
  output = requests.get(url).json()
  needed_output = output['results']
  for val in needed_output:
    title.append(val['title'])
    overview.append(val['overview'])
    popularity.append(val['popularity'])
    vote_count.append(val['vote_count'])
    vote_average.append(val['vote_average'])
    original_language.append(val['original_language'])
    adult.append(val['adult'])
    release_date.append(val['release_date'])

错误栈:

KeyError                                  Traceback (most recent call last)

<ipython-input-41-68206e98ef80> in <cell line: 9>()
     19     original_language.append(val['original_language'])
     20     adult.append(val['adult'])
---> 21     release_date.append(val['release_date'])

KeyError: 'release_date'

问题根源

TMDB热门电影列表中可能包含未上映影片或数据缺失的条目,这类条目没有release_date字段。单页请求刚好未包含此类条目,多页循环时就触发了KeyError。

可行解决方案

方法1:使用字典get()方法设置默认值

用dict.get(key, default)替代直接通过dict[key]访问,当键不存在时返回指定默认值(比如np.nan,方便后续pandas处理):
修改代码中release_date.append(val['release_date'])为:

release_date.append(val.get('release_date', np.nan))

方法2:先检查键是否存在再访问

显式判断字段是否存在,避免直接访问报错:

if 'release_date' in val:
    release_date.append(val['release_date'])
else:
    release_date.append(None)  # 可替换为''、np.nan等适合业务的默认值

方法3:改用字典列表收集数据后转DataFrame(更简洁)

先将每条电影数据以字典形式存入列表,再转换为pandas DataFrame,自动处理缺失字段:

import requests
import pandas as pd
import numpy as np

movies = []
for i in np.arange(1, 3):
    url = f'https://api.themoviedb.org/3/movie/popular?api_key=<<my_api_key>>&language=en-US&page={i}'
    output = requests.get(url).json()
    movies.extend(output['results'])

# 仅提取需要的字段,缺失字段自动填充为NaN
df = pd.DataFrame(movies)[['title', 'overview', 'popularity', 'release_date', 'vote_count', 'vote_average', 'adult', 'original_language']]

内容的提问来源于stack exchange,提问作者Ch M Haider Ali gujjer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:37:37