Python findAll中的匿名函数有什么用途?

Python findAll中的匿名函数有什么用途?,python,beautifulsoup,Python,Beautifulsoup,我正在解析一些带有beautifulsou的表,并找到了一种简单的方法来选择表的td和th标记。尽管我可能会尝试,但我不知道为什么这段特定的代码可以工作(特别是:最后一行) 定义匿名函数dat的意义是什么?我试过soup.findAll(name==“td”)它不起作用,但是soup.findAll(lambda grop:grop.name==“td”)起作用。这个lambda函数如何与BeautifulSoup交互,为什么我需要它?有没有另一种编写相同代码的方法可以让事情变得更加清晰?在Be

我正在解析一些带有beautifulsou的表,并找到了一种简单的方法来选择表的
td
th
标记。尽管我可能会尝试,但我不知道为什么这段特定的代码可以工作(特别是:最后一行)


定义匿名函数dat的意义是什么?我试过
soup.findAll(name==“td”)
它不起作用,但是
soup.findAll(lambda grop:grop.name==“td”)
起作用。这个lambda函数如何与BeautifulSoup交互,为什么我需要它?有没有另一种编写相同代码的方法可以让事情变得更加清晰?

BeautifulSoup
中,函数
find*()
的第一个参数可以是

在这种情况下:

soup.findAll(lambda tag: tag.name == "td")
这实际上是一种过度杀伤力,相当于:

soup.findAll("td")

函数也可用于过滤特定属性,例如:

soup.find_all("a", href=lambda href: href and href.startswith("http"))
一些真实世界的用例:


在BS4中,
find()中有五个过滤器,函数是其中之一:

您可以定义一个将元素作为其唯一参数的函数。如果参数匹配,函数应返回True,否则返回False

函数如何定义并不重要,只要它包含一个元素。

soup.findAll(name==“td”)
soup.findAll(name=“td”)
非常不同。后者可能对你有用。
soup.find_all("a", href=lambda href: href and href.startswith("http"))