没有参数时 findAll 会做什么?

What does findAll do when it has no argument?

我正在尝试理解 python 代码。它有一个声明

soup.findAll()

其中 soupBeautifulsoup object

我打印了结果的类型和长度

类型:<class 'bs4.element.ResultSet'>

长度=1359

这里的 findAll 匹配的是什么?

我无法通过查看 the source 真正弄清楚,但它 列出 所有子标签或 none。 ResultSet 是列表的子类,所以如果长度大于零,那么我猜它会返回所有子标签并且没有搜索条件。 ResultSet 有一个 source 属性,它是一个 SoupStrainer 对象, 包含 attrs 属性中的搜索参数。尝试

result = soup.findAll()
print result.source

这个回答够了:

>>> BeautifulSoup('<div>some text</div>').findAll()

[<html><body><div>some text</div></body></html>,
 <body><div>some text</div></body>,
 <div>some text</div>]

它找到所有子元素,即上层元素html、内层元素body和最内层元素div。这就是 findAll 所做的,它找到 soup 对象的所有子对象,在所有级别上匹配参数,这里的参数是 "empty" 所以它匹配所有内容。

请注意,使用 BeautifulSoup 创建对象将添加 htmlbody(如果它们不存在)。