在BeautifulSoup中访问属性时有问题
|
我在使用Python(2.7)时遇到问题。该代码主要包括:
str = \'<el at=\"some\">ABC</el><el>DEF</el>\'
z = BeautifulStoneSoup(str)
for x in z.findAll(\'el\'):
# if \'at\' in x:
# if hasattr(x, \'at\'):
print x[\'at\']
else:
print \'nothing\'
我期望第一个if
语句正常工作(即:如果at
不存在,则打印\"nothing\"
),但它始终不打印任何内容(即:始终为False
)。另一方面,第二个if
始终是True
,当尝试从第二个<el>
元素访问at
时,代码将引发KeyError
,当然这是不存在的。
没有找到相关结果
已邀请:
4 个回复
babsoft
运算符用于序列和映射类型,是什么使您认为
返回的对象应该正确实现呢?根据BeautifulSoup文档,您应该使用
语法访问属性。 关于ѭ13,我认为您混淆了HTML / XML属性和Python对象属性。
是后者,BeaitufulSoup AFAIK不会在自己的对象属性中反映它解析的HTML / XML属性。 附言注意
中的
对象确实实现了
-所以也许您正在尝试使用错误的对象?您能否显示一个完整但最少的示例来说明问题? 运行此:
我得到:
这是我所期望的。第一个
具有
属性,第二个不具有-并抛出
。 更新2:ѭ23会查看标签内容而不是其属性。要检查属性是否存在,请使用10。
漂汀拦
惭法搽
):
为了进一步完善,pyparsing允许您定义过滤解析操作,以便仅在找到特定的属性值(或attribute-anyvalue)时,标签才匹配:
脖呐