如何使用 Yahoo,Finance stock API 获取股票数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用 Yahoo,Finance stock API 获取股票数据相关的知识,希望对你有一定的参考价值。

有三种方法获得数据,具体如下:

1、通过API获取实时数据

请求地址:http://finance.yahoo.com/d/quotes.csv?s=<股票名称>&f=<数据列选项>

具体参数:

s – 表示股票名称,多个股票之间使用英文“+”分隔如:”XOM+BBDb.TO+MSFT”,表示三个公司的股票:XOM,BBDb.TO,MSFT。

f – 表示返回数据列,如”snd1l1yr”。更详细的参见雅虎股票 API f 参数对照表 。

2、通过API获取历史数据

请求地址如下:http://ichart.yahoo.com/table.csv?s=<string>&a=<int>&b=<int>&c=<int>&d=<int>&e=<int>&f=<int>&g=d&ignore=.csv

具体参数:

s – 股票名称

a – 起始时间,月

b – 起始时间,日

c – 起始时间,年

d – 结束时间,月

e – 结束时间,日

f – 结束时间,年

g – 时间周期。

例如: g=w, 表示周期是“周"。d表示“日”(day),w表示“周”(week),m表示“月”(mouth),一定注意月份参数,其值比真实数据少1。如需要9月数据,则写为08。

3、通过API获取深沪股票数据

雅虎的API是国际性的,支持查询国内沪深股市的数据,但代码稍微变动一下,如浦发银行的代号是:600000.SS。规则是:上海市场末尾加.SS,深圳市场末尾加.SZ。

参考技术A 1、通过API获取实时数据
请求地址
http://finance.yahoo.com/d/quotes.csv?s=<股票名称>&f=<数据列选项>
参数
s –表示股票名称,多个股票之间使用英文加号分隔,如”XOM+BBDb.TO+JNJ+MSFT”,罗列了四个公司的股票:XOM,BBDb.TO, JNJ, MSFT。
f – 表示返回数据列,如”snd1l1yr”。更详细的参见雅虎股票 API f参数对照表。
2、通过API获取历史数据
请求地址
http://ichart.yahoo.com/table.csv?s=<string>&a=<int>&b=<int>&c=<int>&d=<int>&e=<int>&f=<int>&g=d&ignore=.csv
参数
s – 股票名称
a – 起始时间,月
b – 起始时间,日
c – 起始时间,年
d – 结束时间,月
e – 结束时间,日
f – 结束时间,年
g – 时间周期。Example: g=w, 表示周期是’周’。d->’日’(day),w->’周’(week),m->’月’(mouth),v->’dividendsonly’
一定注意月份参数,其值比真实数据-1。如需要9月数据,则写为08。
3、通过API获取深沪股票数据
雅虎的API是国际性的,支持查询国内沪深股市的数据,但代码稍微变动一下,如浦发银行的代号是:600000.SS。规则是:上海市场末尾加.ss,深圳市场末尾加.sz。
最近股市甚火,受聘开发一股票网站,股票的数据从哪里来成了一个大问题,股票软件一般都是加密处理的,还有一些webservices也是要帐号 的,免费的方法只有一种了,抓别人网站的数据。好在经我研究,发现yahoo提供国内和国外股市每天的交易数据资料,这可谓一大幸事啊。
http://table.finance.yahoo.com/table.csv?s=ibm&d=6&e=22&f=2006&g=d&a=11&b=16&c=1991&ignore=.csv
上面的链接可以抓取IBM股票从1991年11月16日起到2006年6月22的数据。把ibm改成sohu,就可以抓到sohu的股票数据了。
http://table.finance.yahoo.com/table.csv?s=sohu&d=6&e=22&f=2008&g=d&a=11&b=16&c=2008&ignore=.csv
上面链接可以抓搜狐股票的数据。
那么中国股市的数据有没有呢?答案是肯定的,不过要按照下面的参数做些调整,下面提供全球证券交易所的资料。
上证股票是股票代码后面加上.ss,深证股票是股票代码后面加上.sz
例如:000001 = 000001.sz
深市数据链接:http://table.finance.yahoo.com/table.csv?s=000001.sz
上市数据链接:http://table.finance.yahoo.com/table.csv?s=600000.ss
上证综指代码:000001.ss,深证成指代码:399001.SZ,沪深300代码:000300.ss
下面就是世界股票交易所的网址和缩写,要查找哪个股票交易所的数据,就按照上面的格式以此类推。
上海交易所=cn.finance.yahoo.com,.SS,Chinese,sl1d1t1c1ohgv
深圳交易所=cn.finance.yahoo.com,.SZ,Chinese,sl1d1t1c1ohgv
美国交易所=finance.yahoo.com,,United States,sl1d1t1c1ohgv
加拿大=ca.finance.yahoo.com,.TO,Toronto,sl1d1t1c1ohgv
新西兰=au.finance.yahoo.com,.NZ,sl1d1t1c1ohgv
新加坡=sg.finance.yahoo.com,.SI,Singapore,sl1d1t1c1ohgv
香港=hk.finance.yahoo.com,.HK,Hong Kong,sl1d1t1c1ohgv
台湾=tw.finance.yahoo.com,.TW,Taiwan,sl1d1t1c1ohgv
印度=in.finance.yahoo.com,.BO,Bombay,sl1d1t1c1ohgv
伦敦=uk.finance.yahoo.com,.L,London,sl1d1t1c1ohgv
澳洲=au.finance.yahoo.com,.AX,Sydney,sl1d1t1c1ohgv
巴西=br.finance.yahoo.com,.SA,Sao Paulo,sl1d1t1c1ohgv
瑞典=se.finance.yahoo.com,.ST,Stockholm,sl1d1t1c1ohgv
参考技术B 使用 Yahoo,Finance stock API 获取股票数据:打开Yahoo Finance主页(这里不让贴url), 最左边有个小框框(quote lookup),里面输入股票代码点击go就能查到即时股价本回答被提问者和网友采纳 参考技术C

使用Yahoo,Finance stock API 获取股票数据的具体方法:

(1)通过API获取实时数据的请求地址:http://finance.yahoo.com/d/quotes.csv?s=<股票名称>&f=<数据列选项>  

(2)具体参数:  s – 表示股票名称,多个股票之间使用英文“+”分隔如:”XOM+BBDb.TO+MSFT”,表示三个公司的股票:XOM,BBDb.TO,MSFT。  f – 表示返回数据列,如”snd1l1yr”。更详细的请参见雅虎股票 API f 参数对照表 。



扩展资料:

VOL值

简单地说,VOLUME表示实时成交量。红色表示实时股票涨,蓝色表示实时股票跌。

(1)OBV是统计成交量变动的趋势来推测股价趋势的一种线形曲线。其主要理论 认为"量是价的先行指标",而股价的波动与成交量的放大或萎缩有密切的关连.通 常股价上升所需的成交量,总是较大;下跌时,则成交量总是较小。

(2)计算方式:以某日为基期,若隔日指数或股票上涨,则基期OBV加上当日成交量为当日OBV;若隔日指数或股票下跌,则基期OBV减去当日成交量为当日OBV。 注:以收盘价为比较基准。 由于K线是主要的图形,故在观察OBV的图形时必须配合K线图。

参考资料来源:百度百科-股票行情


使用 BeautifulSoup 搜索 Yahoo Finance

【中文标题】使用 BeautifulSoup 搜索 Yahoo Finance【英文标题】:Using BeautifulSoup to Search Through Yahoo Finance 【发布时间】:2016-08-30 04:23:53 【问题描述】:

我正在尝试从“关键统计”页面中提取雅虎股票代码的信息(因为 Pandas 库不支持此功能)。

AAPL 示例:

from bs4 import BeautifulSoup
import requests

url = 'http://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')

enterpriseValue = soup.findAll('$ENTERPRISE_VALUE', attrs='class': 'yfnc_tablehead1') #HTML tag for where enterprise value is located

print(enterpriseValue)

编辑:谢谢安迪!

问题:这是打印一个空数组。如何将我的findAll 更改为返回598.56B

【问题讨论】:

【参考方案1】:

嗯,find_all 返回的列表为空的原因是因为该数据是通过单独的调用生成的,该调用不是通过向该 URL 发送 GET 请求来完成的。如果您查看 Chrome/Firefox 上的“网络”选项卡并按 XHR 过滤,通过检查每个网络操作的请求和响应,您也可以找到应该发送 GET 请求的 URL。

在这种情况下,它是https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&amp;crumb=8ldhetOu7RJ&amp;lang=en-US&amp;region=US&amp;modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&amp;corsDomain=finance.yahoo.com,我们可以在这里看到:

那么,我们如何重新创建它?简单的! :

from bs4 import BeautifulSoup
import requests

r = requests.get('https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US&region=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com')
data = r.json()

这会将JSON 响应作为dict 返回。从那里,浏览dict,直到找到您想要的数据:

financial_data = data['quoteSummary']['result'][0]['defaultKeyStatistics']
enterprise_value_dict = financial_data['enterpriseValue']
print(enterprise_value_dict)
>>> 'fmt': '598.56B', 'raw': 598563094528, 'longFmt': '598,563,094,528'
print(enterprise_value_dict['fmt'])
>>> '598.56B'

【讨论】:

这是金子!一般来说,我是网页报废的新手。你有什么资源可以指点我以避免在不久的将来出现类似的问题吗? 查看automatetheboringstuff.com/chapter11,如果您真的想深入了解,请考虑shop.oreilly.com/product/0636920034391.do。这是一项很棒的技能。

以上是关于如何使用 Yahoo,Finance stock API 获取股票数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的代码中使用自定义 CSV 而不是 Yahoo Finance 数据?

使用 BeautifulSoup 搜索 Yahoo Finance

使用Yahoo Finance进行网络抓取

Yahoo! Finance财经数据PYTHON临时读取方法

如何自动加载详细信息

使用 Python 抓取 Yahoo Finance 的资产负债表