Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def parse(self, response):
- parser = SamsParser(content=response, logger=self.log)
- try:
- parser.in_stock_online
- except (ParsingException, SearchException):
- item = self.item
- item['url'] = response.url
- yield item
- except SearchPageError:
- item = self.item
- item['url'] = response.url
- item['status'] = 'check'
- yield item
- else:
- parent = {}
- defaults = {
- 'item_name': '',
- 'item_number': '',
- 'product_id': 'xxxxxx',
- 'sku': '',
- 'upc': '',
- 'in_stock_online': False,
- 'in_stock_instore': False,
- 'price': 0.0,
- 'shipping': 0.0,
- 'surcharge': 0.0,
- 'discount': 0.0,
- 'sale_limit': 0,
- 'sale_end_date': datetime(2001, 01, 01),
- 'original_package': None,
- 'variant_name': '0'
- }
- parent.update(defaults)
- parent['item_number'] = self.item_number
- parse_keys = [
- 'product_id',
- 'item_number',
- 'sku',
- 'in_stock_online',
- 'price',
- 'discount'
- ]
- for key in parse_keys:
- try:
- if hasattr(parser, key):
- parent[key] = getattr(parser, key)
- if not parent[key]:
- parent[key] = defaults[key]
- except (ParsingException, SearchException, SearchPageError):
- parent[key] = defaults[key]
- for child in parser.variants(parent):
- item = self.item
- item['url'] = response.url
- item['sku'] = child['sku']
- item['product_id'] = child['product_id']
- item['price'] = child['price'] if not child['discount'] else child['price'] - child['discount']
- item['shipping_surcharge'] = child['surcharge']
- item['status'] = 'In Stock' if child['in_stock_online'] else 'Out Of Stock'
- item['option'] = BaseParser.format_variants(child['variant_name'], 15)
- item['original_packaging'] = None
- url = 'http://www.samsclub.com/sams/shop/product/moneybox/shippingDeliveryInfo.jsp?'
- params = 'zipCode=10023&productId=%s&skuId=%s&status=inStock&isSelectedZip=false&isLoggedIn=false'
- url += params % (item['product_id'], item['sku'])
- if item['status'] == 'In Stock':
- meta = {'item': item, 'cookiejar': response.meta['cookiejar'] + item['option']}
- yield Request(url, callback=self.parse_shipping, meta=meta)
- else:
- item['shipping'] = 0.0
- yield item
- def parse_shipping(self, response):
- parser = SamsParser(content=response, logger=self.log)
- item = response.meta['item']
- item['shipping'] = parser.shipping
- if item['shipping'] == 'check':
- item['shipping'] = 0.0
- item['status'] = 'check'
- return [item]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement