Die Prüfung für Attribute in BeautifulSoup?

Ich bin Parsen, Daten aus HTML zu Fuß durch die Elemente auf einer bestimmten Ebene mit nextSibling, und machen verschiedene Dinge je nach tag-name und Klasse von jedem element begegnet.

z.B.,

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

Aber das wirft einen Fehler, wenn das element nicht über eine Klasse oder wenn es nicht eine Instanz von Tag-und hat daher auch keine Namen.

Testen, bevor Sie auf, wie diese

if "name" in n:

immer false zurück. Ich konnte, überprüfen Sie den Typ des Objekts zurückgegeben haben nextSibling, um zu versuchen, Unkraut aus NavigableString und Kommentar, aber es muss doch auch einen einfacheren Weg.

BEARBEITEN

Per E-Mail die dev von BeautifulSoup mit dieser Frage, und er empfahl die Prüfung mit

n.get("class")

gibt Keine, wenn "Klasse" nicht gesetzt ist, die es möglich macht, nur:

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

InformationsquelleAutor blocks | 2011-08-09

Schreibe einen Kommentar