1

我需要找到所有内联注册了任何鼠标事件的标签,例如,它应该找到如下标签:

<div onmousedown="somefunc()"> Some text here </div>

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

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

但是检查多个需要很多 .has_key 与 or.. 有一些更简单的方法吗?

4

1 回答 1

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()))
于 2013-04-23T07:29:46.477 回答