Quick example of retrieving stock quotes from Google Finance in Python:
#!/usr/bin/env python import json import pprint import urllib2 def get_stock_quote(ticker_symbol): url = 'http://finance.google.com/finance/info?q=%s' % ticker_symbol lines = urllib2.urlopen(url).read().splitlines() return json.loads(''.join([x for x in lines if x not in ('// [', ']')])) if __name__ == '__main__': quote = get_stock_quote('IBM') print 'ticker: %s' % quote['t'] print 'current price: %s' % quote['l_cur'] print 'last trade: %s' % quote['lt'] print 'full quote:' pprint.pprint(quote)
* note: all values in the returned dict object are Unicode strings.
Output:
ticker: IBM current price: 174.51 last trade: Sep 26, 4:00PM EDT full quote: {u'c': u'+5.17', u'ccol': u'chg', u'cp': u'3.05', u'div': u'0.75', u'e': u'NYSE', u'ec': u'0.00', u'eccol': u'chb', u'ecp': u'0.00', u'el': u'174.51', u'el_cur': u'174.51', u'elt': u'Sep 26, 6:07PM EDT', u'id': u'18241', u'l': u'174.51', u'l_cur': u'174.51', u'lt': u'Sep 26, 4:00PM EDT', u'ltt': u'4:00PM EDT', u's': u'2', u't': u'IBM', u'yld': u'1.72'}
2 comments:
Same thing only in Python3
import json
import pprint
import urllib.request
def get_stock_quote(ticker_symbol):
url = 'http://finance.google.com/finance/info?q={}'.format(ticker_symbol)
lines = urllib.request.urlopen(url).readlines()
lines_string = [x.decode('utf-8').strip('\n') for x in lines]
print(lines_string)
merged = ''.join([x for x in lines_string if x not in ('// [', ']')])
print("merged:{}".format(merged))
return json.loads(merged)
if __name__ == '__main__':
quote = get_stock_quote('IBM')
print( 'ticker: {}'.format(quote['t']))
print( 'current price: {}'.format(quote['l_cur']))
print('last trade: {}'.format(quote['lt']))
print( 'full quote:')
pprint.pprint(quote)
Thanks for the code.
I merged yahoo quotes and this function into one module and then cleaned up the code a bit and added nice field labels; the code is here: https://github.com/mdengler/stockquote
If you're not happy with me publishing it or anything let me know.
Post a Comment