Python Try Except. Обработать 2 одинаковых исключения подряд
Пишу парсер для сайта, где на разных страницах в одном и том же месте блоки имеют разное название. Пытаюсь это обойти при помощи try - except, но в результате все равно получаю ошибку: AttributeError: 'NoneType'. Подскажите, как обработать 2 одинаковых исключения подряд?
try:
# Попробуй тэг "gray db"
db_count = tr.find('td', class_='gray db').text.strip()
print(db_count)
except AttributeError:
# Если нет "gray db", попробуй "gray db rowspan"
db_count = tr.find('td', class_='gray db rowspan').text.strip()
print(db_count)
except AttributeError:
# Если нет и "gray db rowspan", то запиши "неогранич."
db_count = 'неогранич.'
print(db_count)
Ответы (2 шт):
tr.find('td', class_='gray db')
найдет все атрибуты td с классами и gray db, и gray db rowspan
Дело не в except, скорее всего, а в динамически подгружаемых данных на странице.
Но если нужно найти разные class_ , то два раза
except AttributeError
не отработает, работа завершиться после после первого исключения. Вы можете использовать вложение, например:
try:
# Попробуй тэг "gray db"
db_count = tr.find('td', class_='gray db').text.strip()
print(db_count)
except AttributeError:
try:
# Если нет "gray db", попробуй "rowspan"
db_count = tr.find('td', class_='rowspan').text.strip()
print(db_count)
except AttributeError:
# Если нет и "rowspan", то запиши "неогранич."
db_count = 'неогранич.'
print(db_count)
если требуется обработать что-то такое однотипное, и проверок достаточно много, то удобнее в цикле сделать
for c in ['gray db', 'gray db rowspan', '...', , '...', '...', '...']:
try:
db_count = tr.find('td', class_=c).text.strip()
except AttributeError:
continue
else:
break
else:
db_count = 'неогранич.'