name 'product_nal' is not defined

При запуске программы выбивает ошибку "name 'product_nal' is not defined", что странно учитывая то что я ее объявил в цикле и проблем возникать не должно, потому что другие переменные работают исправно

for page in range (1, pages_count):
  
             with open (f'data/p-{page}.html', encoding = "UTF-8") as file: src = file.read()

             soup = BeautifulSoup(src,'lxml')

             items_card = soup.find_all('tr', class_='product-card')

             for item in items_card:
                 product_article = item.find('a',class_='product-card__title').text.strip()
                 try:product_price = item.find ('span', class_='sum').text
                 except: print ('-')
                 try: product_nal = item.find ('span', class_='v-price-box__text v-price-box__text--out-stock').text
                 except: print ('Есть в наличии')
                 data.append ({

                     "product_article": product_article,
                    "product_price": product_price,
                    "product_nal": product_nal


                     })

Ответы (1 шт):

Автор решения: CrazyElf

Сейчас у вас переменная выставляется только при успешной отработке кода в блоке try, при выбрасывании эксепшена переменная остаётся не инициализированной.

Как вариант решения - при выбрасывании исключения заполняйте переменные тем текстом, который вы сейчас печатаете:

try:
    product_price = item.find ('span', class_='sum').text
except: 
    product_price = '-'

try: 
    product_nal = item.find ('span', class_='v-price-box__text v-price-box__text--out-stock').text
except: 
    product_nal = 'Есть в наличии'
→ Ссылка