Продолжение цикла(парсинга) при отсутствии элемента

Рейтинг: 0Ответов: 1Опубликовано: 24.07.2023

Не могли бы подсказать как сделать так, чтобы при отсутствии элемента парсинг продолжался? Вопрос о Python.

    time_info = soup.find_all(class_="row block")[2]
    info_20 = time_info.find_all(class_="section__info")[0]
    info_21 = time_info.find_all(class_="section__info")[1]
    info_22 = time_info.find_all(class_="section__info")[2]

То есть во время парсинга на странице не всегда есть info_22, выдается ошибка и парсинг завершается. Заранее спасибо.

Ответы

▲ 1Принят

В твоем случае если элемент будет не найден, выбьет ошибку - KeyError. Обращаешь нужный блок кода в try/except:

try:
    time_info = soup.find_all(class_="row block")[2]
    info_20 = time_info.find_all(class_="section__info")[0]
    info_21 = time_info.find_all(class_="section__info")[1]
    info_22 = time_info.find_all(class_="section__info")[2]
except KeyError:
    pass # Здесь можно отправлять лог в терминал, что элемент не найден

Если метод find() вернет None и ты у него будешь вызывать какие-то методы (.find(), .text, find_next_sibling()), получишь - AttributeError