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())
将"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())
我正在尝试将值从 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())
将"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())