Economic Indicators Page
# -*- coding: utf-8 -*- from glob import * def between(line, before, after): f = line.find(before) if f >= 0: s = line[f+len(before): ] return s[:s.find(after)] else: return "" def linefeeder(s=None): if s: lines = s.plit("\n") for line in lines: yield line def mdy(d): """ Reformats date d to form month.day.year """ day, month, year = d.split() amonths = ["January", "February",'March', "April", "May", "June", "July", "August", "September", "October", "November", "December"] return "%02d.%02d.%s" % (amonths.index(month)+1, int(day), year) state = 0 out = [] for fname in glob("*bsp*.html"): bspdata = open(fname).read() s = "" state = 0 for line in bspdata.split("\n"): if "" in line: date = between (line, "
", "
") if date: s+="" state = 0 out.append(s) break out.sort(reverse=True) print out[0] for i in range(len(out)): if out[i] != out[i-1]: print i, ":", out[i] " + mdy(date) + " " state = 1 continue if state == 1: if "keystat/day99.htm" in line: state = 2 continue if state == 2: #dollar rate. dollarrate = between(line, "right\">", "" ) if dollarrate: s+="" + dollarrate +" " state= 3 continue if state == 3: if "bspratesdds" in line: state = 4 continue if state == 4: reporate = between(line, '', '
') if reporate: s+=""+ reporate + " " state = 5 continue if state == 5: if "Reverse Repo Rate" in line: state = 6 continue if state == 6: revreporate= between(line, "right\">", "") if revreporate: s+=""+ revreporate+" " state = 7 continue if state == 7: if "Inflation Rate" in line: state = 8 continue if state == 8: infrate = between(line, "right\">", "") if infrate: s+=""+ infrate+ " " state = 9 continue if state == 9: if "NEER" in line: state = 10 continue if state == 10: NEER = between(line, "right\">", "").strip() if NEER: s+=""+ NEER+ " " state = 11 continue if state == 11: if "91-day" in line: state = 12 continue if state == 12: d91 = between(line, "right\">", "") if d91: s+=""+ d91+ " " state = 13 continue if state == 13: if "Gold" in line: state = 14 continue if state == 14: gold = between(line, "right\">", "") if gold: s+=""+ gold+" " state = 15 continue if state == 15: if "Silver" in line: state = 16 continue if state == 16: silver = between(line, "right\">", "") if silver: s+= ""+ silver +"
We plan to make the code cleaner by using the linefeeder function, but this can wait as we have more important things to do.
No comments:
Post a Comment