我只是想要一个简单的API返回,可以输入股票代码并接收完整的公司名称:
当输入 ticker('MSFT') 时,将返回 "Microsoft"。
我只是想要一个简单的API返回,可以输入股票代码并接收完整的公司名称:
当输入 ticker('MSFT') 时,将返回 "Microsoft"。
import yfinance as yf
msft = yf.Ticker("MSFT")
company_name = msft.info['longName']
#Output = 'Microsoft Corporation'
这样,您将能够从股票符号中获取公司的全名。
你需要首先找到一个允许你查找股票代码并提供信息的网站/API。然后,你可以查询该API以获取信息。
我在这里想出了一个快速而简单的解决方案:
import requests
def get_symbol(symbol):
symbol_list = requests.get("http://chstocksearch.herokuapp.com/api/{}".format(symbol)).json()
for x in symbol_list:
if x['symbol'] == symbol:
return x['company']
company = get_symbol("MSFT")
print(company)
这个网站只提供公司名称,我没有放置任何错误检查。您需要使用requests
模块才能使其工作。请使用pip install requests
进行安装。
更新: 这里是使用Yahoo! Finance API的代码示例:
import requests
def get_symbol(symbol):
url = "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query={}®ion=1&lang=en".format(symbol)
result = requests.get(url).json()
for x in result['ResultSet']['Result']:
if x['symbol'] == symbol:
return x['name']
company = get_symbol("MSFT")
print(company)
from fuzzywuzzy import process
import requests
def getCompany(text):
r = requests.get('https://api.iextrading.com/1.0/ref-data/symbols')
stockList = r.json()
return process.extractOne(text, stockList)[0]
getCompany('GOOG')
getCompany('Alphabet')
http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=amd®ion=1&lang=en
,会给你AMD (Advanced Micro Devices, Inc.),AMDA (Amedica Corporation),DOX (Amdocs Limited)
等。http://finance.yahoo.com/d/quotes.csv?s=amd&f=nb4t8
(有很好的文档,此特定调用请求n =名称;b4 =账面价值;t8 = 1年目标价格)。https://query2.finance.yahoo.com/v7/finance/options/amd
(文档不是很好,但是新的……在此处查看有关此API的更多信息:https://dev59.com/r5nga4cB1Zd3GeqPYGmu#40243903)
忘记包含谷歌API,这对股票报价似乎还可以,但不可靠于期权链的完整数据: 'https://www.google.com/finance?q=nyse:amd&output=json'
如果您想通过公司名称而不是其代码来获取其股票价格,可以采取以下步骤:
import yfinance as yf
def getStock(search_term):
results = []
query = requests.get(f'https://yfapi.net/v6/finance/autocomplete?region=IN&lang=en&query={search_term}',
headers={
'accept': 'application/json',
'X-API-KEY': 'API_KEY'
})
response = query.json()
for i in response['ResultSet']['Result']:
final = i['symbol']
results.append(final)
try:
stock = yf.Ticker(results[0])
price = stock.info["regularMarketPrice"]
full_name = stock.info['longName']
curreny = stock.info["currency"]
except Exception as e:
print('Something went wrong')
return f"The stock price of {full_name} is {price} {curreny}"
stock = input("Enter the company's name: ")
final = getStock(stock)
print(final)
输出:
Enter the company's name: Apple
The stock price of Apple Inc. is 172.39 USD
import requests
def get_ticker (company_name):
url = "https://query2.finance.yahoo.com/v1/finance/search"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
params = {"q": company_name, "quotes_count": 1, "country": "United States"}
res = requests.get(url=url, params=params, headers={'User-Agent': user_agent})
data = res.json()
company_code = data['quotes'][0]['symbol']
return company_code
我使用Quandl来获取价格,所以当我遇到类似问题时,我决定在那里检查。如果你访问https://www.quandl.com/data/EOD-End-of-Day-US-Stock-Prices/documentation,在页面的四分之一处的“Available Tickers”下,有一个链接可以下载包含名称和代码的CSV文件。然后,我使用以下代码创建一个以代码为键、名称为值的字典。
def companyNames():
cnames = pd.read_csv('ticker_list.csv')
cnames_dict = pd.Series(cnames.Name.values, index=cnames.Ticker).to_dict()
return cnames_dict