Vérification pour les attributs de BeautifulSoup?

Je suis d'analyse des données à partir d'HTML en marchant à travers des éléments à un certain niveau à l'aide de nextSibling, et de faire des choses différentes en fonction de l'étiquette le nom et la classe de chaque élément rencontré.

par exemple,

if n.name == "p" and n.class == "poem": blah()

Mais cela soulève une erreur si l'élément n'a pas de classe ou si elle n'est pas une instance de Balise et donc n'a pas de nom.

Tests avant d'accéder comme ce

if "name" in n:

retourne toujours false. J'ai pu vérifier le type de l'objet renvoyé par nextSibling pour essayer d'éliminer NavigableString et de Commentaires, mais il doit y avoir un moyen plus facile.

MODIFIER

Envoyé le dev de BeautifulSoup avec cette question et il a recommandé de tester avec

n.get("class")

qui renvoie None si la "classe" n'est pas définie, ce qui permet de faire:

if n.get("class") == "poem": blah()

OriginalL'auteur blocks | 2011-08-09