gpt4 book ai didi

python - BeautifulSoup find_all() 是否保留标签顺序?

转载 作者:行者123 更新时间:2023-12-04 15:20:26 52 4
gpt4 key购买 nike

我希望使用 BeautifulSoup 来解析一些 HMTL。我有一个有几行的表。我正在尝试查找满足某些条件(某些属性值)的行,并稍后在我的代码中使用该行的索引。

问题是:是否find_all()在它返回的结果集中保留我的行的顺序?

我在 docs 中没有找到这个和谷歌搜索只让我到 this answer :

'BeautifulSoup tags don't track their order in the page, no.'



但他没有说他从哪里得到这些信息。

我会很高兴得到答案,但更高兴的是指向一些解释这一点的文档。

编辑:dstudeba 使用 next_sibling 向我指出了这个“解决方法”的方向.
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('./mytable.html'), 'html.parser')
row = soup.find('tr', {'class':'something', 'someattr':'somevalue'})
myvalues = []
while True:
cell = row.find('td', {'someattr':'cellspecificvalue'})
myvalues.append(cell.get_text())
row = row.find_next_sibling('tr', {'class':'something', 'someattr':'somevalue'})
if not row:
break

这让我按照它们出现在我的 html 文件中的顺序获得我需要的单元格内容。

但是,我仍然想知道在 BeautifulSoup 文档中的何处可以找到 find_all()保持秩序与否。这就是为什么我不接受 dstudeba 的回答。 (我的投票没有显示,还没有足够的代表:P)

最佳答案

我的经验是 find_all确实保持秩序。但是要确保您可以使用 find_all_next使用 find_next 的方法将保留顺序的方法。 Here is a link到文档。

关于python - BeautifulSoup find_all() 是否保留标签顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33654837/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com