没有参数时 findAll 会做什么?
What does findAll do when it has no argument?
我正在尝试理解 python 代码。它有一个声明
soup.findAll()
其中 soup
是 Beautifulsoup 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 创建对象将添加 html
和 body
(如果它们不存在)。
我正在尝试理解 python 代码。它有一个声明
soup.findAll()
其中 soup
是 Beautifulsoup 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 创建对象将添加 html
和 body
(如果它们不存在)。