我只是从API中提取数据,但我现在面临的问题是:代码如下:
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'])
当我试图获取一个页面的数据时,它工作正常,但当我使用循环并试图获取3个页面的数据时,它导致了以下错误:
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'
有什么解决办法吗?
我试图问一个问题,我希望得到一个有价值的答案
2条答案
按热度按时间lyr7nygr1#
查看API documentation here,看起来
release_date
字段是响应中的可选字段。实际上,所有的响应字段都是可选的。因此,您的代码不应该假设响应中总是会有release_date
。在Python中,您可以通过两种方式来实现:1.在使用密钥之前检查它是否存在:
您可以使用以下命令检查
release_date
是否存在于val
变量中:1.使用
.get()
Python字典支持一个名为
get
的函数,如果字典中不存在键,则返回None。例如:oyxsuwqo2#
如您在此处所见:在“response”部分中的https://developers.themoviedb.org/3/movies/get-popular-movies字段
release_date
与其他字段一样是可选的,但是通过val['release_date']
,您假设key肯定会在那里,最好通过val.get('release_date', '')
访问值