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