Я анализирую некоторые данные из HTML, просматривая элементы на определенном уровне с помощью nextSibling и выполняя разные действия в зависимости от имени тега и класса каждого обнаруженного элемента.
например,
if n.name == "p" and n.class == "poem": blah()
Но это вызывает ошибку, если элемент не имеет класса или если он не является экземпляром Tag и, следовательно, не имеет имени.
Тестирование перед доступом, как это
if "name" in n:
всегда вернуть ложь. Я мог бы проверить тип объекта, возвращаемого nextSibling, чтобы попытаться отсеять NavigableString и Comment, но должен быть более простой способ.
РЕДАКТИРОВАТЬ
Отправил по электронной почте этот вопрос разработчику BeautifulSoup и порекомендовал протестировать его с помощью
n.get("class")
, который возвращает None, если "class" не установлен, что позволяет просто сделать:
if n.get("class") == "poem": blah()