簡體   English   中英

通過api導入json數據時如何解決“ TypeError:預期的字符串或緩沖區”?

[英]How to solve “TypeError: expected string or buffer” when importing json data via api?

我正在嘗試通過API導入JSON數據,並使用導入的數據來構造DataFrame。

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')

print(germany_frame)向我展示了所需的DataFrame。

我想對許多國家/地區重復此過程,而不僅僅是'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')

我收到一條錯誤消息:

TypeError: expected string or buffer

有人可以幫我解決這個問題嗎?

我沒有使用哪個版本的Python,也沒有哪個版本的requests但是我建議您更新所有內容。 這是我發現的錯誤:

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

您嘗試將請求的Response以json方式加載,因此將其更改為:

self.data_json = self.api_resp.json()

我將您的api網址替換為另一個,因為您的網址錯誤並且對我有用。

再見 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM