def extract_features(self, soup):
    '\n        Extract feature metadata from listing\n        '
    meta_data = {'makelaardij': self.MAKELAARDIJ, 'building': {}, 'unit': {'energy': {}, 'tags': []}}
    dt = soup.find_all('dt')
    dd = soup.find_all('dd')
    for (ind, key) in enumerate(dt):
        if ('Bouwjaar' in key.string):
            meta_data['building']['year_constructed'] = self.find_int(dd[ind].string)
        elif ('Woonoppervlakte' in key.string):
            meta_data['unit']['area'] = self.find_float(dd[ind].text.split(' ')[0])
        elif ('Aantal kamers' in key.string):
            meta_data['unit']['num_rooms'] = self.find_int(dd[ind].text)
        elif ('verdiepingen' in key.string):
            meta_data['unit']['num_floors'] = self.find_int(dd[ind].text)
        elif ('Status' in key.string):
            meta_data['available'] = ('Beschikbaar' in dd[ind].text)
        elif (('Buitenruimte' in key.string) and ('TUIN' in dd[ind].text)):
            meta_data['unit']['tags'].append('garden')
    meta_data['address'] = soup.find('span', {'class': 'adres'}).string
    meta_data['asking_price'] = self.find_int(soup.find('span', {'class': 'price'}).string.replace('.', ''))
    description = soup.find('div', {'id': 'read-more-content'}).children
    for p in description:
        p_text = str(p.text)
        if ('Eigen grond' in p_text):
            meta_data['unit']['own_land'] = True
        elif ('erfpacht' in p_text):
            meta_data['unit']['own_land'] = False
        if ('Energielabel' in p_text):
            label = p_text.split('Energielabel: ')[1][0]
            meta_data['unit']['energy']['label'] = label
        break
    if (not meta_data['unit'].get('area')):
        raise SkipListing('Unable to find area')
    return meta_data
Extract feature metadata from listing
def extract_features(self, soup):
    '\n        \n        '
    meta_data = {'makelaardij': self.MAKELAARDIJ, 'building': {}, 'unit': {'energy': {}, 'tags': []}}
    dt = soup.find_all('dt')
    dd = soup.find_all('dd')
    for (ind, key) in enumerate(dt):
        if ('Bouwjaar' in key.string):
            meta_data['building']['year_constructed'] = self.find_int(dd[ind].string)
        elif ('Woonoppervlakte' in key.string):
            meta_data['unit']['area'] = self.find_float(dd[ind].text.split(' ')[0])
        elif ('Aantal kamers' in key.string):
            meta_data['unit']['num_rooms'] = self.find_int(dd[ind].text)
        elif ('verdiepingen' in key.string):
            meta_data['unit']['num_floors'] = self.find_int(dd[ind].text)
        elif ('Status' in key.string):
            meta_data['available'] = ('Beschikbaar' in dd[ind].text)
        elif (('Buitenruimte' in key.string) and ('TUIN' in dd[ind].text)):
            meta_data['unit']['tags'].append('garden')
    meta_data['address'] = soup.find('span', {'class': 'adres'}).string
    meta_data['asking_price'] = self.find_int(soup.find('span', {'class': 'price'}).string.replace('.', ))
    description = soup.find('div', {'id': 'read-more-content'}).children
    for p in description:
        p_text = str(p.text)
        if ('Eigen grond' in p_text):
            meta_data['unit']['own_land'] = True
        elif ('erfpacht' in p_text):
            meta_data['unit']['own_land'] = False
        if ('Energielabel' in p_text):
            label = p_text.split('Energielabel: ')[1][0]
            meta_data['unit']['energy']['label'] = label
        break
    if (not meta_data['unit'].get('area')):
        raise SkipListing('Unable to find area')
    return meta_data