コード例 #1
0
ファイル: crawlers.py プロジェクト: joe-doe/price-crawler
    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
コード例 #2
0
ファイル: model.py プロジェクト: joe-doe/price-crawler
    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