#Examples #CL H2 = WTI H12 def wsjfs_data(symbol): coded = urllib.quote(symbol) url = 'http://ifs.futuresource.com/charts/charts.jsp?cID=WSJ&iFSsymbols=%s&iFScompareTo=&iFSperiod=D&iFSvminutes=&iFSchartsize=800x550&iFSbardensity=LOW&iFSbartype=BAR&iFSstudies=&iFSohlc=true' % (coded) print url f = urllib.urlopen(url) txt = f.read() soup = BeautifulSoup(txt) ars = soup.findAll('area') data = map( lambda x: x['onmouseover'], ars) splitre = re.compile('Date: *([0-9/]*) *Open: *([0-9.]*) *High: *([0-9.]*) *Low: *([0-9.]*) *Close: *([0-9.]*)') df = DataFrame() for row in data: m = splitre.search(row) if not m: continue S = { 'date' : Series([datetime.strptime(m.group(1), '%m/%d/%Y').date()]) } for k,v in zip( ['open', 'high', 'low', 'close' ], [ m.group(2), m.group(3), m.group(4), m.group(5) ] ): S[k] = Series([float(v)]) df = df.append(DataFrame(S), ignore_index=True) return df wsjfs_data_wrapped = wrap(wsjfs_data) def wsjfs(p, ticker, element='close'): df = wsjfs_data_wrapped( ticker ) return p.applyrange(Series(df[element],index=df['date'],name='%s'%(ticker)))
for row in m2[1:]: pair_strs = row.split(',') pairs = [] for ps in pair_strs: ix = ps.index(':') a,b = ps[1:ix-1], ps[ix+1:] pairs.append( (a, b) ) S = {} for p in pairs: if p[1] == '' or 'UTime' in p[0]: continue elif 'Date' not in p[0]: v = float(p[1]) else: m = numsre.search(p[1]) v = float(m.group(0)) v = datetime.fromtimestamp(v/1000) S[p[0]] = Series([v]) df = df.append(DataFrame(S),ignore_index=True) ds = df['EndDate'] df['date'] = map(lambda x: x.date(), ds) if df[-1:]['date'] == df[-2:-1]['date']: df = df[:-1] return df bigcharts_data_wrapped = wrap(bigcharts_data) def bigcharts(p, country, ticker, element='Last'): df = bigcharts_data_wrapped( country, ticker ) return p.applyrange(Series(df[element],index=df['date'],name='%s:%s' %(country,ticker)))
import datetime from tsdata.util import applyrange from tsdata.func.cache import wrap def bbgquote_data(ticker): url = 'http://www.bloomberg.com/apps/data?pid=webpxta&Securities=%s&TimePeriod=5Y&Outfields=HDATE,PR005-H,PR006-H,PR007-H,PR008-H,PR013-H' % (ticker) f = urllib2.build_opener(urllib2.HTTPCookieProcessor()).open(url) txt = f.read() f.close() s = txt.splitlines() df = DataFrame() for row in s[1:-1]: d,c,o,h,l,v = row.split('"') d = int(d) date = datetime.date(year = d / 10000, month = (d / 100) % 100, day = d % 100) S = { 'date' : [date] } for key,val in zip(['close','open','high','low','volume'],[c,o,h,l,v]): try: S[key] = [float(val.replace(',',''))] except: pass df = df.append(DataFrame(S), ignore_index=True) return df bbgquote_data_wrapped = wrap(bbgquote_data,str.upper) def bbgquote(p, ticker, element='close'): df = bbgquote_data_wrapped(ticker) ts = Series(df[element], index=df['date']) return p.applyrange(ts)