def get_prices(self): """ Generator method which produces a response dict for every item of interest (key in all_info dict) :return: response dict every time it is called """ for item in self.model.get_all_items(): for store in self.model.get_stores_for_item(item): pc = PriceCrawler(self.config, self.model, item) response = { 'timestamp': time.time(), 'item_name': item, } try: response.update(pc.get_store_price(store)) except TypeError: continue # no price for store yield response
def add_new_item(self, item): for store in item['stores']: rec = { 'item_name': item['item_name'], } rec.update(store) self.db.mongodb[self.items_collection_name].insert(rec) if store['store_name'] == 'skroutz': skroutz_site_url = store['url'] specs = { 'item_name': item['item_name'], 'specs': get_specs(skroutz_site_url), 'quick_specs': get_quick_specs(skroutz_site_url), 'image': get_image_for_item(skroutz_site_url) } self.db.mongodb[self.specs_collection_name].insert(specs) # specs = { # 'item_name': item['item_name'], # 'specs': get_specs('http://www.gsmarena.com/microsoft_lumia_950-7262.php') # } # self.db.mongodb['specs'].insert(specs) from price_crawler import PriceCrawler pc = PriceCrawler(self.config, self, item['item_name']) rec = { 'timestamp': time.time(), 'item_name': item['item_name'], } try: rec.update(pc.get_store_price(store['store_name'])) self.add_record(rec) except TypeError: pass # no price for store