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