#!/usr/bin/python import sys import urllib2 import psycopg2 import sys import ConfigParser from xml.dom.minidom import parseString def getText(nodelist): v = "" for node in nodelist: if node.nodeType == node.TEXT_NODE: v = v + node.data return v def getData(elm, tagname): p = elm.getElementsByTagName(tagname) return getText(p[0].childNodes) currency = ("USD", "GBP", "CHF", "JPY") config = ConfigParser.ConfigParser() config.read("db.cfg") try: PG_HOST = config.get("postgres", "host") PG_USER = config.get("postgres", "user") PG_PASSWD = config.get("postgres", "passwd") PG_DATABASE = config.get("postgres", "database") except (ConfigParser.NoSectionError, ConfigParser.NoOptionError), e: print "error: config: %s" % (str(e)) sys.exit(1) try: db = psycopg2.connect(host=PG_HOST, user=PG_USER, password=PG_PASSWD, database=PG_DATABASE) except Exception, e: print "error: pgsql connect: %s" % (str(e)) sys.exit(1) if __name__ == "__main__": if len(sys.argv) < 2: print "usage: python gengi.py <yyyy-mm-dd>" sys.exit(1) dags = sys.argv[1] fields = dags.split('-') sdags = fields[2] + "." + fields[1] + "." + fields[0] f = urllib2.urlopen("http://www.sedlabanki.is/?PageID=289&dagur=" + sdags) data = f.read() f.close() doc = parseString(data) cursor = db.cursor() for mynt in doc.getElementsByTagName("mynt"): myntnafn = getData(mynt, "myntnafn") if myntnafn not in currency: continue kaupgengi = getData(mynt, "kaupgengi") midgengi = getData(mynt, "midgengi") solugengi = getData(mynt, "solugengi") cursor.execute(""" INSERT INTO gengi ( dags, myntnafn, kaupgengi, midgengi, solugengi) VALUES (%s, %s, %s, %s, %s) """, (dags, myntnafn, kaupgengi, midgengi, solugengi)) db.commit()