如何直接从 Python 使用 Alpha Vantage API

新手上路,请多包涵

我一直在使用 Romel Torres 的 alpha_vantage 包,但也想直接从 python 使用 Alpha Vantage API(提供更强大的功能)和包请求,如此处所述 CALL with CURL an API through Python

 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, data)
print(response.json())[/code]

但是在返回的字典中收到以下错误消息:

{‘错误消息’:’无效的 API 调用。请重试或访问 TIME_SERIES_DAILY 的文档 ( https://www.alphavantage.co/documentation/ )。’}

使用 requests.post() 结果是:

 response = requests.post(API_URL, data)
{'detail': 'Method "POST" not allowed.'}

我重新检查了文档并遵循了所有必需的 API 参数。感谢您对我在这里可能遗漏的内容以及正确的调用和/或任何其他替代方法的帮助。谢谢

原文由 shanlodh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

提示在错误中。将请求的方法从 post 更改为 get

 response = requests.get(API_URL, params=data)

并使用作为 Alpha Vantage 数据存在的股票代码。 NIFTY 不是股票 - 它是指数。如果您使用 MSFT 尝试您的代码,它将起作用。

原文由 I_got_a_guy 发布,翻译遵循 CC BY-SA 4.0 许可协议

这就是我在不使用任何包装器的情况下从 Alpha Vantage 获取每日股票时间序列的方法。接收后,我将数据转换成 pandas 数据框以供进一步处理。

     import requests
    import pandas as pd

    API_URL = "https://www.alphavantage.co/query"
    symbol = 'SMBL'

    data = { "function": "TIME_SERIES_DAILY",
    "symbol": symbol,
    "outputsize" : "full",
    "datatype": "json",
    "apikey": "your_api_key" }

    response = requests.get(API_URL, data)
    response_json = response.json() # maybe redundant

    data = pd.DataFrame.from_dict(response_json['Time Series (Daily)'], orient= 'index').sort_index(axis=1)
    data = data.rename(columns={ '1. open': 'Open', '2. high': 'High', '3. low': 'Low', '4. close': 'Close', '5. adjusted close': 'AdjClose', '6. volume': 'Volume'})
    data = data[[ 'Open', 'High', 'Low', 'Close', 'AdjClose', 'Volume']]
    data.tail() # check OK or not

原文由 Serhii Kushchenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题