BeautifulSoup:使用findAll检索没有lambda表达式的标签

时间:2016-01-30 17:13:29

标签: python lambda beautifulsoup

我是Python和BeautifulSoup的新手。我试图通过将lambda表达式重写为函数来加深对lambda表达式的理解,反之亦然。有人可以帮我理解如何使用BeautifulSoup库为Python重写下面的lambda表达式吗?

bsObj.findAll(lambda tag:len(tag.attrs) == 2)

我尝试了以下操作,但它不起作用:

def twoTags(tag):
   if len(tag.attrs) == 2:
      return tag.attrs

bsObj.findAll(twoTags(tag))

我收到一条错误消息,指出未定义全局名称“tag”。 谢谢!

1 个答案:

答案 0 :(得分:0)

您希望将函数传递给find_all,并且您的函数需要返回一个布尔值。总而言之,您的代码应如下所示:

def twoTags(tag):
   return len(tag.attrs) == 2:

bsObj.findAll(twoTags)