使用beautifulsoup查找具有某种形式属性的所有标签

时间:2013-04-23 06:59:21

标签: python python-2.7 beautifulsoup

我需要找到所有内嵌注册鼠标事件的标签 例如,它应该找到像:

这样的标签
<div onmousedown="somefunc()"> Some text here </div>

我可以使用bs4 docs中给出的函数进行检查:

def reg_event(tag):
    return tag.has_key('onmousedown')
tags_with_mouse_event = soup.find_all(reg_event)

但检查多个需要很多.has_key结合或..有一些更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以选择具有on..属性的所有代码,例如:

soup.find_all(lambda tag: any(attr.startswith('on') for attr in tag.attrs.keys()))

否则,请制作set您所追踪的事件并执行以下操作:

events = {'onmousedown', 'onmouseup', 'onclick'} # etc...
soup.find_all(lambda tag: any(attr in events for attr in tag.attrs.keys()))