尽管有“类似措辞”的警告,但我认为没有人问过这个问题。
我开始使用 BeautifulSoup (v4),例如,要从 A 链接获取 href,您可以这样做:
for a_link in soup.html.body.select( 'a' ):
print( a_link )
if a_link.has_attr( 'href' ):
print( a_link[ 'href' ])
if a_link.has_attr( 'hrefXXX' ):
print( "... also hrefXXX")
print( hasattr( a_link, 'href' ) )
print( hasattr( a_link, 'hrefXXX' ) )
...这里发生的是“也”行永远不会打印,但最后两行总是返回True
!事实上,你把什么作为第二个参数似乎并不重要hasattr
,它似乎总是返回True
。
由于无法解释hasattr
的行为,我在尝试搜索后的第一个想法是,这has_attr
可能是 BeautifulSoup 特有的。从搜索来看,情况确实如此:换句话说,这是在查找 HTML 标记是否具有“标记属性”。
另一方面,我有点怀疑它has_attr
可能比 BeautifulSoup 有更广泛的应用。几年前我使用过 Jython,我感觉可能存在 ahas_attr
和 a hasattr
。
有人可以解释为什么hasattr
总是回来True
吗?