-1
    def parser_products(self, products):

        product_list = []
        for product in products:

            for images in product['images']:
                src = images['src']

            charlist = {
                'name': product['name'],
                'id': product['id'],
                'price': product['price'],
                'slug': product['slug'],
                'description': product['description'],
                'image': src,
                'category': self.parser_categories(product['categories'])
            }
            product_list.append(charlist)


    def parser_categories(self, categories):
        d = {
            '158': '2',
            '533': '4',
            '156': '5',
            '379': '6',
            '277': '7',
            '443': '8',
            '528': '20',
            '295': '21',
            '306': '22',
        }
        parsed_categories = []
        for category in categories:
            parsed_categories.append(d[str(category['id'])])
        return parsed_categories

Hey! this parser from a scrapper gives me an error:

Traceback (most recent call last):
  File "/Users/jakubstrawa/programming/deorwork/ecommerce/scrapper/woocommercescrapper.py", line 112, in <module>
    scraper.get_products()
  File "/Users/jakubstrawa/programming/deorwork/ecommerce/scrapper/woocommercescrapper.py", line 34, in get_products
    self.parser_products(products)
  File "/Users/jakubstrawa/programming/deorwork/ecommerce/scrapper/woocommercescrapper.py", line 68, in parser_products
    'category': self.parser_categories(product['categories'])
  File "/Users/jakubstrawa/programming/deorwork/ecommerce/scrapper/woocommercescrapper.py", line 101, in parser_categories
    parsed_categories.append(d[str(category['id'])])
KeyError: '523'

I've never encountered KeyError 523 and can't find it anywhere on the internet. Do you have any idea whats wrong? Thanks in advance for your help

  • Your dictionary `d` doesn't have a key `'523'`. `category['id']` was 523 for some item, and you haven't handled the case where the id is not in the dict. – shriakhilc Jan 04 '22 at 11:43

1 Answers1

1

error means there is no key "523" in dictrionary d as shown

 d = {
            '158': '2',
            '533': '4',
            '156': '5',
            '379': '6',
            '277': '7',
            '443': '8',
            '528': '20',
            '295': '21',
            '306': '22',
        }

you can use try except block to catch exception

Atlas Bravoos
  • 360
  • 2
  • 12