如何直接从Python使用Alpha Vantage API

2024-05-28 21:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用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]

但是我在返回的dict中得到了以下错误消息:

{'Error Message': 'Invalid API call. Please retry or visit the documentation (https://www.alphavantage.co/documentation/) for TIME_SERIES_DAILY.'}

对于requests.post(),结果是:

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

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


Tags: httpsimportalphaapiurldatatimeresponse
4条回答

第一个

您正在使用“csv”数据类型。

"datatype": "csv"

但您试图以JSON格式打印

print(response.json())

按建议尝试使用get方法

import requests
import alpha_vantage
import json


API_URL = "https://www.alphavantage.co/query" 
symbols = ['QCOM',"INTC","PDD"]

for symbol in symbols:
        data = { "function": "TIME_SERIES_INTRADAY", 
        "symbol": symbol,
        "interval" : "60min",       
        "datatype": "json", 
        "apikey": "XXX" } 
        response = requests.get(API_URL, data) 
        data = response.json()
        print(symbol)
        a = (data['Time Series (60min)'])
        keys = (a.keys())
        for key in keys:
                print(a[key]['2. high'] + " " + a[key]['5. volume'])

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

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

并使用一个作为Alpha优势数据存在的ticker符号。NIFTY不是股票,而是指数。如果您使用MSFT尝试您的代码,它将工作。

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

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

并使用一个作为阿尔法优势数据存在的ticker符号。NIFTY不是股票,而是指数。如果您使用MSFT尝试您的代码,它将工作。

相关问题 更多 >

    热门问题