コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
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)