python 使用pythn提取日期的问题

q3aa0525  于 2023-04-10  发布在  Python
关注(0)|答案(2)|浏览(92)

我只是从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'

有什么解决办法吗?
我试图问一个问题,我希望得到一个有价值的答案

lyr7nygr

lyr7nygr1#

查看API documentation here,看起来release_date字段是响应中的可选字段。实际上,所有的响应字段都是可选的。因此,您的代码不应该假设响应中总是会有release_date。在Python中,您可以通过两种方式来实现:
1.在使用密钥之前检查它是否存在:
您可以使用以下命令检查release_date是否存在于val变量中:

if "release_date" in val:
    release_date.append(val['release_date'])

1.使用.get()
Python字典支持一个名为get的函数,如果字典中不存在键,则返回None。例如:

release_date.append(val.get("release_date"))
oyxsuwqo

oyxsuwqo2#

如您在此处所见:在“response”部分中的https://developers.themoviedb.org/3/movies/get-popular-movies字段release_date与其他字段一样是可选的,但是通过val['release_date'],您假设key肯定会在那里,最好通过val.get('release_date', '')访问值

相关问题