我需要解析带有电影ID和标题的API,并通过Flask获取特定元素,但是它总是给我错误:
app = flask.Flask(__name__)
app.config["DEBUG"] = True
@app.route('/filmId/<filmid>', methods=['GET'])
def filmId(filmid):
retrieve_url = "http:www.exemple.url"
response = requests.get(retrieve_url)
retrieve_data = response.json()
for d in retrieve_data:
if filmid in d["videoId"]:
return filmid
else:
return "An error occurred with id "+filmid
app.run()
这仅在我用API中的第一个id编译url时起作用,而给出第二个或第三个id则显示错误消息。我在做什么错了?
另一方面,我完全不了解如何使用Flask解析json:似乎通常的方式(data [“ key”])每次都会出错。
答案 0 :(得分:1)
response.json()
返回一个字典。请参阅详细信息键和字典的值。检查retrieve_data
变量的值。
使用Flask解析JSON数据
由于我无权访问API端点,因此我展示了一个示例,该示例从API检索JSON数据,然后对其进行处理以向用户显示特定值。
我想向用户显示给定国家代码的国家名称。如果找不到国家名称,则会向用户显示错误消息。
https://restcountries.eu/rest/v2/alpha/bd
代码:
import requests
from flask import Flask, render_template, jsonify
app = Flask(__name__)
@app.route('/countries/<country_code>', methods=['GET'])
def get_country_information(country_code):
retrieve_url = "https://restcountries.eu/rest/v2/alpha/{}".format(country_code)
response = requests.get(retrieve_url)
data = response.json()
found_country = False
for key in data:
if key == "name":
found_country = True
return data["name"]
if not found_country:
return "Country name is not found for country code {}".format(country_code)
输出:
有效的国家/地区代码:
国家/地区代码无效