如何解决" TypeError:期望的字符串或缓冲区"通过api导入json数据时?

时间:2016-12-28 13:07:55

标签: python api pandas

我尝试通过API导入JSON数据,并使用导入的数据构建DataFrame。

{
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
}

import json import pandas as pd import numpy as np import requests api_username = 'acb' api_password = 'efg' germany_name = 'Germany' germany_api_url = "https://api.country_data.com/stats/?country=" + germany_name + "&year=2014" germany_api_resp = requests.get(germany_api_url,auth=(api_username,api_password)) germany_data_json = json.loads(germany_api_resp) germany_frame = pd.DataFrame(germany_data_json['data']).set_index('tag') 向我展示了所需的DataFrame。

我想为许多国家重复这个过程,而不仅仅是print(germany_frame),所以我创建了一个这样的国家/地区对象:

'Germany'

当我创建我的第一个对象时,像这样:

class Country(object):
    def __init__(self,name):
        self.name = name
        self.api_url = "https://api.country_data.com/stats/?country=" + name + "&year=2014"
        self.api_resp = requests.get(self.api_url,auth=(api_username,api_password))
        self.data_json = json.loads(self.api_resp)
        self.frame = pd.DataFrame(self.data_json['data']).set_index('tag')

我收到错误消息:

Germany = Country('Germany')

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我不知道您使用的是哪个版本的Python,以及requests的哪个版本,但我建议您更新所有内容。这是我发现的错误:

self.data_json = json.loads(self.api_resp)

您尝试从请求加载json-way Response,因此将其更改为:

self.data_json = self.api_resp.json()

我将你的api url替换为另一个,因为你的错误是对我有用的。

见啊!