[英]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.