2024-07-08 14:46:03 发布
网友
我对在Python中编程很陌生。
我想制作一个应用程序,从google finance获取股票价格。一个例子是CSCO(Cisco系统)。然后,我将使用该数据在股票达到某个值时向用户发出警告。它还需要每隔30秒刷新一次。
问题是我不知道如何获取数据!
有人有什么想法吗?
import urllib import re def get_quote(symbol): base_url = 'http://finance.google.com/finance?q=' content = urllib.urlopen(base_url + symbol).read() m = re.search('id="ref_(.*?)">(.*?)<', content) if m: quote = m.group(2) else: quote = 'no quote available for: ' + symbol return quote
我发现如果你用ref.*使用m.group(2)可以得到更好的结果,因为参考id从一个库存更改为另一个库存。
至于现在(2015年),google finance api已被弃用。但是可以使用pypi模块googlefinance。
安装googlefinance
$pip install googlefinance
很容易得到当前的股价:
>>> from googlefinance import getQuotes >>> import json >>> print json.dumps(getQuotes('AAPL'), indent=2) [ { "Index": "NASDAQ", "LastTradeWithCurrency": "129.09", "LastTradeDateTime": "2015-03-02T16:04:29Z", "LastTradePrice": "129.09", "Yield": "1.46", "LastTradeTime": "4:04PM EST", "LastTradeDateTimeLong": "Mar 2, 4:04PM EST", "Dividend": "0.47", "StockSymbol": "AAPL", "ID": "22144" } ]
谷歌金融是一个提供实时股票数据的来源。雅虎也有其他api,比如yahoo-finance,但纽约证交所和纳斯达克的股票延迟了15分钟。
本模块由Corey Goldberg提供。
程序:
import urllib import re def get_quote(symbol): base_url = 'http://finance.google.com/finance?q=' content = urllib.urlopen(base_url + symbol).read() m = re.search('id="ref_694653_l".*?>(.*?)<', content) if m: quote = m.group(1) else: quote = 'no quote available for: ' + symbol return quote
示例用法:
import stockquote print stockquote.get_quote('goog')
更新:更改了正则表达式以匹配Google Finance的最新格式(截至2011年2月23日)。这说明了依赖屏幕抓取时的主要问题。
我发现如果你用ref.*使用m.group(2)可以得到更好的结果,因为参考id从一个库存更改为另一个库存。
至于现在(2015年),google finance api已被弃用。但是可以使用pypi模块googlefinance。
安装googlefinance
很容易得到当前的股价:
谷歌金融是一个提供实时股票数据的来源。雅虎也有其他api,比如yahoo-finance,但纽约证交所和纳斯达克的股票延迟了15分钟。
本模块由Corey Goldberg提供。
程序:
示例用法:
更新:更改了正则表达式以匹配Google Finance的最新格式(截至2011年2月23日)。这说明了依赖屏幕抓取时的主要问题。
相关问题 更多 >
编程相关推荐