我正在尝试使用flask-restplus将URL中的数据检索为json格式。
from flask import Flask, render_template
import requests
import json
from flask_restplus import Resource, Api, fields
from flask_sqlalchemy import SQLAlchemy
# config details
COLLECTION = 'indicators'
app = Flask(__name__)
api = Api(
app,
title='Akhil Jain',
description='Developing ' \
'a Flask-Restplus data service that allows a client to ' \
'read and store some publicly available economic indicator ' \
'data for countries around the world, and allow the consumers ' \
'to access the data through a REST API.'
)
@api.route('/indicators')
def get(self):
uri = 'http://api.worldbank.org/v2/indicators'
try:
res = requests.get(uri)
print(res)
return res.json()
except:
return False
if __name__ == '__main__':
app.run(debug=True)
但是尝试了GET之后,我得到的响应是False而不是json数据。 谁能告诉我如何获取响应数据,以便我可以将其处理到sqllite db。
谢谢
答案 0 :(得分:1)
您必须从响应中获取内容
如果您要保存xml数据,则。
try:
res = requests.get(uri)
print(res.content)
return res.content
except:
return False
如果要将其另存为json,请安装模块xmltodict。
try:
res = requests.get(uri)
jsondata = xmltodict.parse(res.content)
print(jsondata)
return jsondata
except:
return False
答案 1 :(得分:0)
您正在尝试检索XML产生端点。 -调用json
会引发异常,因为获取的内容不是json
。
执行此操作的理想方法是构建一个函数,以根据您的需求解析数据;以下示例可以作为参考。
import xml.etree.ElementTree as element_tree
xml = element_tree.fromstring(response.content)
for entry in xml.findall(path_here, namespace_here):
my_value = entry.find(attribute_here, namespace_here).text
您可以选择使用lxml
或其他可用工具。 -以上是如何解析xml
响应的示例。