如何用Python创建股票报价获取应用程序

18 投票
8 回答
68292 浏览
提问于 2025-04-16 12:18

我刚开始学习Python编程。

我想做一个应用程序,可以从谷歌财经获取股票价格。比如说CSCO (思科系统)。然后我想用这些数据来提醒用户当股票价格达到某个值时。这个应用还需要每30秒刷新一次

问题是我完全不知道怎么去获取这些数据!

有没有人能给点建议?

8 个回答

2
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 会随着不同的股票而变化。

13

截至目前(2015年),谷歌财经的接口已经不再支持了。不过,你可以使用一个叫做 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"
  }
]

谷歌财经是一个提供实时股票数据的来源。还有其他的接口,比如雅虎的 yahoo-finance,不过这些数据对于纽约证券交易所和纳斯达克的股票会延迟15分钟。

16

这个模块是由 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')

更新:修改了正则表达式,以匹配谷歌财经最新的格式(截至2011年2月23日)。这展示了依赖屏幕抓取时的主要问题。

撰写回答