将烧瓶中的URL中的数据检索为json格式

时间:2019-03-17 06:09:13

标签: python rest flask

我正在尝试使用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。

谢谢

2 个答案:

答案 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响应的示例。