def parse_campsite_detail(self, response):
        campsite_detail_item = CampsiteDetailItem()
        campsite_detail_item['unknown'] = {}
        campsite_detail_units = response.xpath('//div[@id="divMobileunit"]/p')
        # parse unit detail
        while len(campsite_detail_units):
            unit = campsite_detail_units.pop()
            key = unit.xpath('text()').extract_first().strip()
            value = unit.xpath('b/text()').extract_first().strip()
            key = strings.snake_case(key)
            if key in campsite_detail_item.fields:
                campsite_detail_item[key] = value
            elif key in equal_campsite_detail_keys:
                campsite_detail_item[equal_campsite_detail_keys[key]] = value
            else:
                campsite_detail_item['unknown'][key] = value

        # parse Amenities
        campsite_detail_amenities = response.xpath('//div[@id="pnlAmenities"]/ul/li')
        while len(campsite_detail_amenities):
            amenity = campsite_detail_amenities.pop()
            key = amenity.xpath('text()').extract_first().strip()
            value = amenity.xpath('b/text()').extract_first().strip()
            key = strings.snake_case(key)
            if key in campsite_detail_item.fields:
                campsite_detail_item[key] = value
            elif key in equal_campsite_detail_keys:
                campsite_detail_item[equal_campsite_detail_keys[key]] = value
            else:
                campsite_detail_item['unknown'][key] = value
        return campsite_detail_item
def escape_column_name(field_code: str, do_snake_case: bool = True):
    res = snake_case(field_code) if do_snake_case else field_code
    res = ''.join([ch.lower() if ch.isalnum() else '_' for ch in res])
    res = res if len(res) > 0 and res[0].isalpha() else '_' + res
    while '__' in res:
        res = res.replace('__', '_')
    return res
Example #3
0
    def parse_campsite_detail(self, response):
        details = response.xpath('//div[@id="sitedetail"]/ul/li/text()').extract()
        campsite_detail_item = CampsiteDetailItem()
        while len(details):
            item = details.pop()
            item = re.search('^([^:]+):\s*(.+)', item)
            key = strings.snake_case(item.group(1))
            value = item.group(2)
            if key in campsite_detail_item.fields:
                campsite_detail_item[key] = value
            elif key in equal_campsite_detail_keys:
                campsite_detail_item[equal_campsite_detail_keys[key]] = value
            else:
                campsite_detail_item['unknown'][key] = value

        return campsite_detail_item