web-dev-qa-db-ja.com

Alpha Vantage APIキーはPythonで無効なエラーを返し、Response [200]とは何ですか?

次のコードを使用して、 alphavantage からデータを取得していません。次のAPIエラーが発生します。

"Error Message": "Invalid API call. Please retry or visit the documentation (https://www.alphavantage.co/documentation/) for TIME_SERIES_DAILY." }
import requests
import alpha_vantage

API_URL = "https://www.alphavantage.co/query"

data = {
    "function": "TIME_SERIES_DAILY",
    "symbol": "NIFTY",
    "outputsize": "compact",
    "datatype": "csv",
    "apikey": "xxx",
    }
response = requests.get(API_URL, params=data)
print(response.json())

コードを編集して別のことを試しましたが、それでも奇妙なことがありました。今回は次のとおりです。

Response [200]

そのためのコードは次のとおりです。

import requests
import alpha_vantage

API_URL = "https://www.alphavantage.co/query"

data = {
    "function": "TIME_SERIES_DAILY",
    "symbol": "US",
    "outputsize": "compact",
    "datatype": "csv",
    "apikey": "xxx"
    }
response = requests.get(API_URL, params=data)
print(response)

ここで何が起こっているのですか? (以下のキーはxxxに難読化されています)

2
FabioSpaghetti

このAPIを呼び出そうとすると、3つの問題が発生します。

  1. 最初の試みでは、APIを正しく呼び出しますが、無効なティッカーを使用しています。 NIFTYは、他のグローバルインデックスとともに Alpha Vantage API ではサポートされていません。

  2. 2回目の試行では、レスポンスオブジェクトを出力します。これは、文字列に変換すると、受け取った出力と同じように見えます。_Response[200]_は、API呼び出しが成功したことを意味します。そこからデータを取得するには、_response.text_またはresponse.json()を出力する必要があります

  3. 3番目の問題はもっと微妙で、何を返そうとしているかに依存します。 _datatype: "csv"_を使用してcsvファイルを返す場合は、response.json()を使用できません。これは、json形式ではないためです。代わりに、そのフィールドを空白のままにして、デフォルトの_datatype: "json"_を使用できます。

CSVファイルを取得する場合は、print(response.text)を使用できます

JSONの例

_import requests
import alpha_vantage

API_URL = "https://www.alphavantage.co/query"

data = {
    "function": "TIME_SERIES_DAILY",
    "symbol": "M&M.NSE",
    "outputsize": "compact",
    "apikey": "xxx"
    }
response = requests.get(API_URL, params=data)
print(response.json())
_

CSVの例

_import requests
import alpha_vantage

API_URL = "https://www.alphavantage.co/query"

data = {
    "function": "TIME_SERIES_DAILY",
    "symbol": "M&M.NSE",
    "outputsize": "compact",
    "datatype": "csv",
    "apikey": "xxx"
    }
response = requests.get(API_URL, params=data)
print(response.text)
_
1
Patrick Collins