def process_title(title, logger): # Take the title, and break down into initial_period and mortgage type # mortgage_type: # If it contains Fixed = F, Tracker = T, "Freedom to Fix"?, "Fixed Cashback"?, "Flexi Tracker"? initial_period = str(themortgagemeter_utils.get_months(title, logger)) mortgage_type = mc_util.get_mortgage_type(title, logger) return (initial_period, mortgage_type)
def process_title(title,logger): # Take the title, and break down into initial_period and mortgage type # mortgage_type: # If it contains Fixed = F, Tracker = T, "Freedom to Fix"?, "Fixed Cashback"?, "Flexi Tracker"? initial_period = str(themortgagemeter_utils.get_months(title,logger)) mortgage_type = mc_util.get_mortgage_type(title,logger) return (initial_period,mortgage_type)
def get_product_page(static,url): logger = logging.getLogger('retrieve') bsobj = themortgagemeter_utils.get_page(static,'static_html/first_direct/mortgage-rates',url,logger) print bsobj sections = bsobj.find_all(attrs={'class':'section'}) for section in sections: #print section #print "=============================" tbodys = section.find_all("tbody") for tbody in tbodys: print tbody trs = tbody.find_all("tr") for tr in trs: tds = tr.find_all("td") booking_fee_int = 0 count = 0 for td in tds: # assume default of 25 years term = str(25 * 12) td_text = td.text.strip().encode('utf-8') #print count #print td if count == 0: #initial_period initial_period = themortgagemeter_utils.get_months(td_text,logger) #mortgage_type F/D/T/O/V mortgage_type = mc_util.get_mortgage_type(td_text,logger) #eligibility print td_text pass elif count == 1: #ltv_percent ltv_percent = themortgagemeter_utils.get_percentage(td_text,logger) elif count == 2: #rate_percent rate_percent = themortgagemeter_utils.get_percentage(td_text,logger) elif count == 3: #svr_percent svr_percent = themortgagemeter_utils.get_percentage(td_text,logger) elif count == 4: #apr_percent apr_percent = themortgagemeter_utils.get_percentage(td_text,logger) elif count == 5: booking_fee_int = booking_fee_int + int(themortgagemeter_utils.get_money(td_text,logger)) elif count == 6: booking_fee_int = booking_fee_int + int(themortgagemeter_utils.get_money(td_text,logger)) count = count + 1 booking_fee = str(booking_fee_int) mc_util.handle_mortgage_insert(institution_code,mortgage_type,rate_percent,svr_percent,apr_percent,ltv_percent,initial_period,booking_fee,term,url,eligibility,logger)
def process_page(url, logger): #var mortgages = [ #{ #data: "65543", #name: "2 year fixed", #offer: " ", #customer: "Existing Customer", #type: "Fixed Rate", #lowltv: 0, #highltv: 60, #initialrate: 2.19, #until: 2, #rateafter: 4.95, #apr: 4.6, #fee: 499, #minloan: 1, #maxloan: 1000000, #links: "/personal/mortgages/all-our-mortgages/fixed-rate-mortgages/mortgages-fixed-rate-2year-60ltv"},{ #[...] #data: "655434", #name: "3 year fixed - Fee Offer ", #offer: " ", #customer: "First Time Buyer", #type: "Fixed Rate", #lowltv: 90, #highltv: 95, #initialrate: 4.99, #until: 3, #rateafter: 4.95, #apr: 5.2, #fee: 0, #minloan: 1, #maxloan: 1000000, #links: "/personal/mortgages/all-our-mortgages/fixed-rate-mortgages/mortgages-three-year-fixed-rate-95ltv"} #] resp = themortgagemeter_utils.get_page(False, '', url, logger, tostring=True) # Tidy up json # http://stackoverflow.com/questions/4033633/handling-lazy-json-in-python-expecting-property-name resp = re.sub(r"{\s*'?(\w)", r'{"\1', resp) resp = re.sub(r",\s*'?(\w)", r',"\1', resp) resp = re.sub(r"(\w)'?\s*:", r'\1":', resp) resp = re.sub(r":\s*'(\w+)'\s*([,}])", r':"\1"\2', resp) json_obj = json.loads(resp[16:]) print json_obj #mortgage_list = json_obj['mortgages'] #if mortgage_list == 'none': # logger.info('URL returned nothing: ' + url) # return for mortgage in json_obj: customer = mortgage['customer'] if customer == "Existing Customer": eligibilities = ("EMH", "EBM", "EDE", "EED") elif customer == "First Time Buyer": eligibilities = ("NFTB", ) elif customer == "New Customer": eligibilities = ("NRM", "NMH") else: raise Exception('Unrecognised eligibility: ' + eligibility, eligibility, l) mortgage_type = mc_util.get_mortgage_type(mortgage['name'], logger) rate_percent = str(mortgage['initialrate']) svr_percent = str(mortgage['rateafter']) apr_percent = str(mortgage['apr']) initial_period = str(int(mortgage['until'] * 12.0)) booking_fee = str(mortgage['fee']) ltv_percent = str(mortgage['highltv']) for eligibility in eligibilities: print eligibility mc_util.handle_mortgage_insert(institution_code, mortgage_type, rate_percent, svr_percent, apr_percent, ltv_percent, initial_period, booking_fee, term, 'http://www.nationwide.co.uk', eligibility, logger)