我通过使用nextSibling遍历某个级别的元素来解析HTML中的一些数据,并根据遇到的每个元素的标记名和类执行不同的操作。
例如
if n.name == "p" and n.class == "poem": blah()
但是,如果元素没有类或者不是标记的实例,因此没有名称,则会引发错误。
在这样访问之前进行测试
if "name" in n:
总是返回false。我可以检查nextSibling返回的对象类型,尝试剔除NavigableString和Comment,但必须有一种更简单的方法。
编辑
向BeautifulGroup的开发人员发送了一封电子邮件,他建议使用
n.get("class")
如果“类”未设置,则返回“无”,这样就可以执行以下操作:
if n.get("class") == "poem": blah()
试试这个~:
if class in n.attrs
在这种情况下,例外情况可能是您的朋友:
如果是这样,您也可以将其包装成一个
except
:除了使用
get()
方法另一个选项是使用
has_attr()
(使用has_key()
预美化组4):相关问题 更多 >
编程相关推荐