Beautiful Soup的find_all()方法返回的是一个列表,其中包含了所有符合条件的标签。但是这个列表并没有顺序保证,也就是说不一定是按照在文档中出现的顺序返回的。
如果需要保证有序列表,可以使用find_all()方法的另外一个参数,即recursive=False。当使用recursive=False时,Beautiful Soup会按照文档中的顺序依次查找符合条件的标签。这样返回的列表就是有序的了。
以下是一个示例代码:
from bs4 import BeautifulSoup
html = """
Title 1
Paragraph 1
Title 2
Paragraph 2
Title 3
Paragraph 3
"""
soup = BeautifulSoup(html, 'html.parser')
container = soup.find('div', {'class': 'container'})
# 返回一个无序列表
print(container.find_all('p'))
# 返回一个有序列表
print(container.find_all('p', recursive=False))
以上代码中,第一个print语句输出的是一个无序列表,而第二个print语句输出的是一个按照文档中顺序排列的有序列表。