Alpha Vantage 传递多个查询 - 全球报价

Alpha Vantage passing multiple queries - Global Quote

我正在尝试将值从 Alpha Vantage 查询传递到 pandas df,以便我可以提取某些值。

当我 运行 一个简单的 1 符号查询时,我可以轻松地将信息传递到 df 中。之后,我可以转置 df 并使用列提取数据。

一个例子是:

import requests
import alpha_vantage
import pandas as pd

API_URL = "https://www.alphavantage.co/query"
data = {
    "function": "GLOBAL_QUOTE",
    "symbol": "MSFT",
    "apikey": "XXX",
    }

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

df = pd.DataFrame(response.json())
df = df.T
print()
print()
print(df)

这个returns:

但是,我希望传递多个符号,但我一直收到错误提示:

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

正在使用的代码是:

import requests
import alpha_vantage
import pandas as pd

df = pd.DataFrame()
API_URL = "https://www.alphavantage.co/query"

symbols= ["IBM", "MSFT", "APPL"]
for symbol in symbols:
    data = {
        "function": "GLOBAL_QUOTE",
        "symbol": symbols,
        "apikey": "XXX",
        }

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

    print(response.json())

我相信这符合网站预期的格式:

https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=MSFT&apikey=demo

我的问题是:如何使用符号列表将多个请求传递给 Alpha Vantage API?

您必须使用 BATCH_STOCK_QUOTES 并使用字符串而不是数组,应该这样做:

import requests
import alpha_vantage
import pandas as pd

df = pd.DataFrame()
API_URL = "https://www.alphavantage.co/query"

#symbols= ["IBM", "MSFT", "LVLT"]
symbols= "IBM,MSFT,LVLT"
data = {
        "function": "BATCH_STOCK_QUOTES",
        "symbols": symbols,
        "apikey": "XXX",
        }

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


print(response.json())

http://alpha.vantage.api.gallery.streamdata.io/listings/alpha-vantage/queryfunctionbatch-stock-quotes-get-openapi/

将"symbols"更改为"symbol"

"symbol": symbols, -> "symbol": symbol, 现在您将整个列表作为数据传递。

import alpha_vantage
import pandas as pd

df = pd.DataFrame()
API_URL = "https://www.alphavantage.co/query"

symbols= ["IBM", "MSFT", "APPL"]
for symbol in symbols:
    data = {
        "function": "GLOBAL_QUOTE",
        "symbol": symbol,
        "apikey": "XXX",
        }

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

    print(response.json())